当前位置: 首页 > 编程语言 > C#

判断用户是否在本地Administrators组分享

时间:2023-04-11 02:21:31 C#

判断用户是否在本地Administrators组我正在使用GetCurrentProcess、OpenProcessToken、GetTokenInformation和LookupAccountSid来验证用户是否是本地管理员。GetTokenInformation返回TOKEN_GROUPS结构数组的SID_AND_ATTRIBUTES结构。我遍历集合并比较LookupAccountSid返回的用户名。我的问题是在本地(或更一般地在我们的内部域上),这按预期工作。内置管理员在当前进程令牌的组成员中,我的方法返回true。在另一个开发人员的另一个域上,该函数返回false。LookupAccountSid对于TOKEN_GROUPS结构的前2次迭代工作正常,返回None和Everyone,然后TOKEN_GROUPS抱怨“A参数不正确”。什么会导致只有两台设备正常工作?TOKEN_GROUPS结构表示有14个组。我假设它是一个无效的SID。我所拥有的只是来自PInvoke网站的示例。唯一的区别是为了使用LookupAccountSid,我将Sid参数从byte[]更改为IntPtr,因为SID_AND_ATTRIBUTES也是使用IntPtr定义的。这是正确的,因为LookupAccountSid是用PSID定义的吗?refuintcchName,StringBuilderReferencedDomainName,refuintcchReferencedDomainName,outSID_NAME_USEpeUse);代码落空的位置for(inti=0;i

最新推荐
猜你喜欢