You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于_SID_AND_ATTRIBUTES_HASH结构体多SID问题的咨询

SID_AND_ATTRIBUTES_HASH 疑问解答

对应结构体定义如下:

typedef struct _SID_AND_ATTRIBUTES_HASH {
   DWORD               SidCount;
   PSID_AND_ATTRIBUTES SidAttr;
   SID_HASH_ENTRY      Hash[SID_HASH_SIZE];
} SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;

为什么结构体中存在多个SID?

单个Windows用户确实对应唯一的用户主SID,但Windows的访问控制逻辑校验的是用户安全上下文内的所有关联SID,并不只校验用户本身的SID,这些需要校验的SID包括:

  • 用户自身的主SID
  • 用户所属的所有本地组、域组SID
  • 当前登录会话对应的特殊身份SID,比如Everyone、Authenticated Users、交互式登录用户这类内置身份标识

所以SidAttr数组就是用来存储用户安全上下文内所有关联的SID和对应属性,SidCount就是这些SID的总数量,该结构体设计上本来就需要存储多个SID。

数组中哪一个是对应用户的正确主SID?

SID_AND_ATTRIBUTES_HASH的设计目的是快速校验某个SID是否在当前SID集合中,结构体末尾的Hash数组就是用来加速查找、避免全量遍历数组的,本身没有单独的字段标记哪个是用户主SID。
如果需要找到对应用户的主SID,你可以先通过GetTokenInformation函数传入TokenUser信息类,从当前访问令牌中获取到用户主SID的具体值,再遍历SidAttr数组和每个条目里的SID做匹配,匹配成功的就是目标条目。

内容的提问来源于stack exchange,提问作者Piyush Shekdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:03