0

我有一些使用“advapi32.dll”连接到各种服务器以收集各种信息用于文档目的的 C# 代码。

该文档的一部分是从每台机器上获取用户权限。我正在使用 LsaEnumerateAccountsWithUserRight 函数,该函数似乎适用于 Windows 2003 机器,但不适用于 2008 机器。我收到“拒绝访问”错误。我已经阅读了各种网站上的各种主题,建议禁用 UAC(我已经尝试过)并在使用 LsaOpenPolicy(我已经尝试过)时使用 POLICY_VIEW_LOCAL_INFORMATION 而不是 POLICY_ALL_ACCESS,但似乎都不起作用。有没有人遇到过这个问题?

4

1 回答 1

0

对于它的价值,我可以在 Win2008 R2 上使用 LsaLookupNames2 和 LsaEnumerateAccountRights(在管理员模式下运行 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)

我使用了以下两个参考:

于 2012-03-01T17:54:36.803 回答