C# LsaEnumerateAccountsWithUserRight在连接到Windows Server 2008 r2时失败

C# LsaEnumerateAccountsWithUserRight在连接到Windows Server 2008 r2时失败,c#,windows-server-2008-r2,lsa,C#,Windows Server 2008 R2,Lsa,我有一些c代码,它使用advapi32.dll连接到各种服务器,以收集各种信息用于文档编制 该文档的一部分是从每台计算机获取用户权限。我正在使用LsaEnumerateAccountsWithUserRight函数,它似乎可以在Windows 2003计算机上运行,但不能在2008计算机上运行。我收到“拒绝访问”错误。我在各种网站上读到各种帖子,建议禁用我尝试过的UAC,并在使用LsaOpenPolicy时使用POLICY_VIEW_LOCAL_信息,而不是POLICY_ALL_访问,我尝试过,

我有一些c代码,它使用advapi32.dll连接到各种服务器,以收集各种信息用于文档编制


该文档的一部分是从每台计算机获取用户权限。我正在使用LsaEnumerateAccountsWithUserRight函数,它似乎可以在Windows 2003计算机上运行,但不能在2008计算机上运行。我收到“拒绝访问”错误。我在各种网站上读到各种帖子,建议禁用我尝试过的UAC,并在使用LsaOpenPolicy时使用POLICY_VIEW_LOCAL_信息,而不是POLICY_ALL_访问,我尝试过,但似乎都不起作用。有人遇到过这个问题吗?

值得一提的是,我能够在管理员模式下运行VS的Win2008 R2上使用lsalokupNames2和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)
我使用了以下两个参考:

-伟大的开端 -LsaOpenPolicy的最低权限,在x64系统上安全封送