C++ 获取本地组的域用户成员资格
我的计算机上有一个本地组C++ 获取本地组的域用户成员资格,c++,c,windows,active-directory,group-membership,C++,C,Windows,Active Directory,Group Membership,我的计算机上有一个本地组Grp1,我想检查域用户的成员资格。我已经为此使用了NetUserGetLocalGroups。但我遇到的问题是,域用户不是组Grp1的直接成员。例如,假设有两个域组,分别是DomainGrp1和DomainGrp2。现在,我的用户DomainUser1是组DomainGrp2的一部分,DomainGrp2是组DomainGrp1的一部分,组DomainGrp1是本地组Grp1的一部分。如果在上述场景中使用此NetUserGetLocalGroups,则API不会为Dom
Grp1
,我想检查域用户的成员资格。我已经为此使用了NetUserGetLocalGroups
。但我遇到的问题是,域用户不是组Grp1
的直接成员。例如,假设有两个域组,分别是DomainGrp1
和DomainGrp2
。现在,我的用户DomainUser1
是组DomainGrp2
的一部分,DomainGrp2
是组DomainGrp1
的一部分,组DomainGrp1
是本地组Grp1
的一部分。如果在上述场景中使用此NetUserGetLocalGroups
,则API不会为DomainUser1
枚举Grp1
,但实际上DomainUser1
是Grp1
的一部分
另外请注意,如果DomainUser1
是DomainGrp1
的直接成员,而不是DomainGrp2
(其中DomainGrp1
是Grp1
的成员)。API完美地枚举了Grp1
。有人能帮我解决这个问题吗
我已尝试使用LogonUser
API进行模拟。但我遇到的问题是,用户在下次登录时被标记为更改密码。然后API返回false,因此我无法获取模拟令牌
PS:我不想使用任何目录服务API
我可以在MSDN上找到类似的问题您只需自己迭代组成员身份即可。显然,您需要访问域(即,您不能在本地用户帐户的上下文中运行)才能这样做。这是一种方式,前提是我愿意与域进行交互。但不幸的是,我不愿意这样做,因为我不能确保我将在客户机上拥有领域的知识。因此,我不想使用目录服务API。显然,如果不与域进行交互,您就无法做到这一点-您需要的信息存储在域中。但是您不一定需要使用DS API,例如,请参阅NetLocalGroupGetMembers和NetGroupGetUsers。请再次查看问题。我已经使用了NetUserGetLocalGroups。NetLocalGroupGetMembers的工作方式类似。我也试过了。NetLocalGroupGetMembers应该为您提供属于感兴趣的本地组的域组,NetGroupGetUsers应该能够枚举这些域组中的用户。但是,您必须进行试验,看看是否能够以这种方式处理嵌套域组,我对此不确定。如果没有,你只需要使用目录服务API——微软甚至有这样的API,可以满足你的需要,所以我不明白你为什么这么不愿意使用它。你只需要自己迭代组成员身份。显然,您需要访问域(即,您不能在本地用户帐户的上下文中运行)才能这样做。这是一种方式,前提是我愿意与域进行交互。但不幸的是,我不愿意这样做,因为我不能确保我将在客户机上拥有领域的知识。因此,我不想使用目录服务API。显然,如果不与域进行交互,您就无法做到这一点-您需要的信息存储在域中。但是您不一定需要使用DS API,例如,请参阅NetLocalGroupGetMembers和NetGroupGetUsers。请再次查看问题。我已经使用了NetUserGetLocalGroups。NetLocalGroupGetMembers的工作方式类似。我也试过了。NetLocalGroupGetMembers应该为您提供属于感兴趣的本地组的域组,NetGroupGetUsers应该能够枚举这些域组中的用户。但是,您必须进行试验,看看是否能够以这种方式处理嵌套域组,我对此不确定。如果没有,你只需要使用目录服务API——微软甚至有这样的API,它完全满足你的需要,所以我不明白你为什么不愿意使用它。