gpt4 book ai didi

c++ - 如何为 AD 组使用 AllocateAndInitializeSid?

转载 作者:行者123 更新时间:2023-11-30 03:34:23 26 4
gpt4 key购买 nike

我想为域管理员组创建一个 SID 并将其传递给 CheckTokenMembership 以确定给定的 AD 用户是否属于该组。但是,我不太确定哪些标识符权限和子权限应该与 AllocateAndInitializeSid 一起使用。到目前为止,我看到的所有“有效”示例都只处理本地组。

例子:

SID_IDENTIFIER_AUTHORITY ntAuthority = SECURITY_NT_AUTHORITY;
PSID adminGroup;

AllocateAndInitializeSid(&ntAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&adminGroup);

应该使用什么权限和子权限来为 AD 管理员组创建 SID?我用 SECURITY_NT_AUTHORITY 尝试了 DOMAIN_GROUP_RID_ADMINSDOMAIN_USER_RID_ADMINCheckTokenMembership 总是报告给定用户不是该组的成员这是不正确的。

任何示例和指向在线文档的指针都将不胜感激。

最佳答案

您可以使用 LsaQueryInformationPolicy()使用 PolicyDnsDomainInformation 检索计算机主域的 SID。

或者,如果您知道您正在查询的帐户与您感兴趣的域管理员组属于同一个域,您可以使用 GetWindowsAccountDomainSid()从帐户 SID 中提取域 SID。

获得域 SID 后,您可以使用 CreateWellKnownSid()为域管理员组创建 SID。使用 WinAccountDomainAdminsSid 选项。然后就像您已经建议的那样调用 CheckTokenMembership() 即可。

关于c++ - 如何为 AD 组使用 AllocateAndInitializeSid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com