2011-09-01 5 views
0

"advapi32.dll"을 사용하여 다양한 서버에 연결하여 문서화를위한 다양한 정보를 수집하는 C# 코드가 있습니다.Windows Server 2008 R2에 연결할 때 LsaEnumerateAccountsWithUserRight가 실패합니다.

해당 문서의 일부가 각 컴퓨터에서 사용자 권한을 얻고 있습니다. Windows 2003 컴퓨터에서 작동하는 것처럼 보이는 LsaEnumerateAccountsWithUserRight 함수를 사용하고 있지만 2008 컴퓨터에서는 사용하지 않습니다. '액세스 거부'오류가 발생합니다. 나는 다양한 사이트에서 UAC (내가 시도한)를 사용하지 않도록 권장하고 LsaOpenPolicy (시도한)를 사용할 때 POLICY_ALL_ACCESS 대신 POLICY_VIEW_LOCAL_INFORMATION을 사용했지만 그 중 아무 것도 작동하지 않는 것 같습니다. 이 문제를 겪은 사람이 있습니까?

답변

0

가치있는 점은 Win2008 R2 (관리자 모드에서 VS 실행)에서 LsaLookupNames2 및 LsaEnumerateAccountRights를 사용할 수 있다는 것입니다.

LsaOpenPolicy(... Access.POLICY_LOOKUP_NAMES | Access.POLICY_VIEW_LOCAL_INFORMATION, out lsaHandle) 
... 
LsaLookupNames2(lsaHandle, 0, 1, names, ref tdom, ref tsids) 
... 
LsaEnumerateAccountRights(lsaHandle, sid, out hPrivileges, out privileges_count) 

나는 다음과 같은 두 개의 참조 사용 : - 좋은 출발

  • I successfully called advapi32's LsaEnumerateAccountRights() from C#. Now how do I unmarshal the array of LSA_UNICODE_STRING it returns? -

  • 관련 문제