我正在尝试使用Windows安全描述符来管理跨机器共享的某些对象的安全性。 (详情与此问题无关)
我基本上构建了一个ACL并将其转换为SDDL,我将该对象作为其权限保存。我的系统基本上工作,除了对于某些帐户,特别是本地管理员帐户,当我调用" GetSecurityDescriptorSddlForm()"时,它用真正的SID代替别名。
例如,假设我有一个带有SID的本地管理员帐户
S-1-5-21-1234567890-1234567890-1234567890-500
我希望得到像sddl
D:(A;;CCDCLCSWRPWP;;;S-1-5-21-1234567890-1234567890-1234567890-500)
但是它出现了
D:(A;;CCDCLCSWRPWP;;;LA)
这个问题是如果对象是在不同的机器上共享的,那么当从sddl字符串创建安全对象时,它将解释" LA"作为该机器上的本地管理员,即使它应该是另一台机器上的本地管理员。本地管理员的完整SID将是特定于机器的,并且不会出现此问题。在我的情况下,我希望能够将不同机器的本地管理员视为不同的实体。
是否有可能获得" ObjectSecurity.GetSecurityDescriptorSddlForm"以某种方式输出完整的sddl而不是较短的别名的方法?