检查给定组中的成员身份的 SID 集合

Check a collection of SIDs for membership in a given group

本文关键字:成员 身份 SID 集合 检查      更新时间:2023-10-16

我有一个 SID 值的集合,如果它们在给定组中,则需要显示它们。我知道我可以用CheckTokenMember做到这一点,如果我有一个令牌句柄的话。如何从 Windows 中的 SID 获取令牌句柄?

  1. 使用LookupAccountSid获取 SID 的帐户
  2. 使用NetUserGetGroups获取此帐户所属的所有组。
    编辑来自 eryksun 的说明:首先检查目标组的 SID。如果是 SidTypeGroup,请调用 NetUserGetGroups。如果是 SidTypeAlias,请调用 NetUserGetLocalGroups(又名别名,如"BUILTIN\Administrators")
  3. 使用LookupAccountName获取组的 SID。
  4. 检查帐户 SID(步骤 1)是否是 SID 集合(步骤 3)的成员。使用EqualSid功能。

您可以在旧 win32.mvps.org 页面中找到合适的旧代码。可悲的是,页面不见了。但时光机有帮助。这里是旧 fksec 示例的链接

你在那里找到一个易于使用的 sid 类。它还提供sid::MemberOfsid::Members功能。代码不是我的风格,但它有效。