Windows LookupAccountNameW返回SidTypeAlias,但应为SidTypeGroup

Windows LookupAccountNameW返回SidTypeAlias,但应为SidTypeGroup,windows,winapi,Windows,Winapi,我正在尝试使用以下内容定义输入的凭据的类型: SID_NAME_USE pe; ... resolved=LookupAccountNameW (NULL,L"builtin\users",&sid,&cbsid,buff,&dd,&pe); 无论我输入builtin\users还是users,它都会成功解析,但会在pe enum中返回SidTypeAlias。 但我期望SidTypeWellKnownGroup或SidTypeGroup 问题:如何可靠地定义给

我正在尝试使用以下内容定义输入的凭据的类型:

SID_NAME_USE pe;
...
resolved=LookupAccountNameW (NULL,L"builtin\users",&sid,&cbsid,buff,&dd,&pe);
无论我输入builtin\users还是users,它都会成功解析,但会在pe enum中返回SidTypeAlias。 但我期望SidTypeWellKnownGroup或SidTypeGroup

问题:如何可靠地定义给定字符串是否为Windows组名?

MSDN页面简要介绍了此上下文中别名的含义:

下表提供了域相关RID的示例,可用于为本地组别名形成众所周知的SID

其中一个表条目是针对用户组的,因此您所描述的行为与预期一致

您可以按计划继续使用LookupAccountName,只需修改代码即可识别SidTypeAlias、SidTypeWellKnownGroup或SidTypeGroup中的任何一个表示组。

MSDN页面简要介绍了此上下文中别名的含义:

下表提供了域相关RID的示例,可用于为本地组别名形成众所周知的SID

其中一个表条目是针对用户组的,因此您所描述的行为与预期一致

您可以按计划继续使用LookupAccountName,只需修改代码即可识别SidTypeAlias、SidTypeWellKnownGroup或SidTypeGroup中的任何一个表示组。

提供了一些关于什么是SidTypeAlias的提示:

别名对象:请参阅资源组

资源组:仅当接收上下文的服务器是资源组所在域的成员时,其成员资格才会添加到授权上下文的组对象

这表明别名在此上下文中表示域本地组

我在我的域中确认了这一点,通过在每个域上使用并调用LookupAccountName来获取所有域组。结果:

所有全局组和通用组都有SidTypeGroup; 所有非内置域本地组groupType 0x8000004都具有SidTypeAlias; 内置域本地组,如帐户操作员或用户,也有SidTypeAlias,但我必须在DC上运行代码-在成员工作站上执行时,LookupAccountName失败错误\u NONE\u映射到除IIS\u IUSR之外的所有此类组。 底线-应将SidTypeAlias视为一个组。

给出了关于什么是SidTypeAlias的一些提示:

别名对象:请参阅资源组

资源组:仅当接收上下文的服务器是资源组所在域的成员时,其成员资格才会添加到授权上下文的组对象

这表明别名在此上下文中表示域本地组

我在我的域中确认了这一点,通过在每个域上使用并调用LookupAccountName来获取所有域组。结果:

所有全局组和通用组都有SidTypeGroup; 所有非内置域本地组groupType 0x8000004都具有SidTypeAlias; 内置域本地组,如帐户操作员或用户,也有SidTypeAlias,但我必须在DC上运行代码-在成员工作站上执行时,LookupAccountName失败错误\u NONE\u映射到除IIS\u IUSR之外的所有此类组。
底线-应将SidTypeAlias作为一个整体来对待。

对API错误行为的投诉不是问题。比尔,谢谢你提供的信息。我已经修改了帖子,让它有明确的问题。将你的问题标题改为你刚刚编辑的问题,并在问题正文中讨论该任务。为什么你认为你只能得到一个组SID类型?不可能为组创建别名吗?对感知到的API错误行为的投诉不是问题。比尔,谢谢你提供的信息。我已经修改了帖子,让它有明确的问题。将你的问题标题改为你刚刚编辑的问题,并在问题正文中讨论该任务。为什么你认为你只能得到一个组SID类型?是否无法为组创建别名?