如何以编程方式确定用户帐户是否是Windows中特定组的成员?

给定一个组名和一个用户帐户,我想知道提供的用户是否属于一个特定的组。 用户可以是本地用户或域用户,并且该组可以是本地组或域组,并且该组也可以嵌套在其他组内。 简而言之,我正在寻找一个像bool IsUserMemberOf(User,Group)这样的函数,它将在内部调用相应的Win32 API来执行search。 我想进行上述查询的过程应具有查询本地和AD组所需的权限。 我想运行企业pipe理员帐户下的进程应该做的查询任何森林区议会,但可能不适用于不属于域的机器。 关于这个查询过程应该运行什么帐户的任何想法,以便它可以查询LSA以及AD?

为什么Apache需要SSLCertificateKeyFile?

如何testing主机名称是否指本地机器

在没有完全信任的情况下devise基于Linux的系统来实现所有权/pipe理权的可转移性

Nginx auth_basic发送密码明文吗?

用于在服务器上存储Openssl密码的安全选项(Linux,Python,CherryPy)

您需要阅读GetTokeninformation (TOKEN_USER), AllocateAndInitializeSid和CheckTokenMemberShip 。

UserPrincipal.IsMemberOf(GroupPrincipal) “返回一个布尔值,指定主体是否是指定组的成员”。

Magnus是对的,你必须使用CheckTokenMembership

你可以在UnlockPolicy.c中找到一个示例(下载完整的源码 ),函数ShouldUnlockForUser和UsagerEstDansGroupe (原谅我的法语;)。

这是它的胆量:

HRESULT IsUserInGroup(HANDLE user,const wchar_t* groupe) { HRESULT result = E_FAIL; SID_NAME_USE snu; WCHAR szDomain[256]; DWORD dwSidSize = 0; DWORD dwSize = sizeof szDomain / sizeof * szDomain; if ((LookupAccountNameW(NULL,groupe,&dwSidSize,szDomain,&dwSize,&snu) == 0) && (ERROR_INSUFFICIENT_BUFFER == GetLastError())) { SID* pSid = (SID*)malloc(dwSidSize); if (LookupAccountNameW(NULL,pSid,&snu)) { BOOL b; if (CheckTokenMembership(user,&b)) { if (b == TRUE) { result = S_OK; } } else { result = S_FALSE; } } //Si tout vas bien (la presque totalitée des cas),on delete notre pointeur //avec le bon operateur. free(pSid); } return result; }

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...