我有一组 SID 值,如果它们在给定组中则需要显示。我知道如果我有 token 句柄,我可以使用 CheckTokenMembership 来做到这一点。如何从 Windows 中的 SID 获取 token 句柄?
最佳答案
- 使用
LookupAccountSid
获取SID的账号 - 使用
NetUserGetGroups
获取此帐户所属的所有组。
编辑 来自 eryksun 的注释:首先检查目标组的 SID。如果它是 SidTypeGroup,请调用 NetUserGetGroups。如果是 SidTypeAlias,调用 NetUserGetLocalGroups(也称为别名,例如“BUILTIN\Administrators”) - 使用
LookupAccountName
获取组的 SID。 - 检查帐户 SID(第 1 步)是否是 SID 集合(第 3 步)的成员。使用
EqualSid
函数。
您可以在旧的 win32.mvps.org 页面上找到合适的旧代码。可惜页面不见了。但 Wayback 机器有帮助。这里是旧版 fksec samples 的链接
你在那里找到了一个易于使用的 sid 类。它还提供了 sid::MemberOf
和 sid::Members
函数。该代码不是我的风格,但它可以工作。
关于c++ - 检查一组 SID 以了解给定组中的成员身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47078695/