检查一组SID以获取给定组中的成员资格

时间:2017-11-02 15:14:40

标签: c++ winapi

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

1 个答案:

答案 0 :(得分:1)

  1. 使用#include<numeric> #include<iostream> #include<cmath> using std::cout; int main(){ auto a = 1.1; auto b = 1.2; auto c = 0.9; auto d = 0.1; auto e = 0.1; auto N = 1000; auto x = 0.; for(int n = 0; n != N; ++n) x = 0.999*x + 0.001*(sin(a*x) + b*sin(c*x) - e)/d; cout << sin(a*x) + b*sin(c*x) << " == " << d*x + e << '\n'; cout << "solution is x = " << x << '\n'; } 获取SID帐户
  2. 使用LookupAccountSid获取此帐户所属的所有群组。
    编辑来自eryksun的注意事项:首先检查目标群组的SID。如果是SidTypeGroup,请调用NetUserGetGroups。如果是SidTypeAlias,请调用NetUserGetLocalGroups(AKA别名,例如&#34; BUILTIN \ Administrators&#34;)
  3. 使用NetUserGetGroups获取该组的SID。
  4. 检查帐户SID(步骤1)是否是SID集合的成员(步骤3)。使用LookupAccountName功能。
  5. 您可以在旧的win32.mvps.org页面中找到合适的旧代码。遗憾的是页面消失了。但是Wayback机器有帮助。这是指向旧fksec samples

    的链接

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