Ошибка LsaEnumerateAccountsWithUserRight при подключении к Windows Server 2008 r2

У меня есть код С#, который использует «advapi32.dll» для подключения к различным серверам для сбора различной информации для целей документации.

Частью этой документации является получение разрешений пользователя с каждой машины. Я использую функцию LsaEnumerateAccountsWithUserRight, которая работает на машинах с Windows 2003, но не на машинах с 2008. Я получаю сообщение об ошибке «Отказано в доступе». Я читал множество тем на разных сайтах, рекомендующих отключать UAC (что я пробовал) и использовать POLICY_VIEW_LOCAL_INFORMATION вместо POLICY_ALL_ACCESS при использовании LsaOpenPolicy (что я пробовал), и ни один из них, похоже, не работает. Кто-нибудь сталкивался с этой проблемой?


person Bitfiddler    schedule 01.09.2011    source источник


Ответы (1)


Что бы это ни стоило, я могу использовать LsaLookupNames2 и LsaEnumerateAccountRights в Win2008 R2 (запуская VS в режиме администратора).

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)

Я использовал следующие две ссылки:

person Scott Brickey    schedule 01.03.2012