繁体   English   中英

如何从机器 sid 获取/查找域 sid

[英]How to get/find domain sid from machine sid

我可以得到机器 Sid,如下所示:

var dir = new DirectoryEntry($"WinNT://{Environment.MachineName},Computer");
var objSid = dir.Children.Cast<DirectoryEntry>().First().InvokeGet("objectSID");
var secId = new SecurityIdentifier((byte[])objSid, 0);
var machineSid = secId.AccountDomainSid.ToString();

我试图从机器 Sid 中找到计算机 Sid,但它始终是 NULL。

using (PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "AbcDomain", "userName", "password"))
{
    var pc01 = ComputerPrincipal.FindByIdentity(principalContext, IdentityType.Sid, machineSid);
    //output: pc01 = null
    var pc02 = ComputerPrincipal.FindByIdentity(principalContext, IdentityType.Name, "PC-JACKML5291");
    //output: pc02...

}

我想在调用JoinDomainOrWorkgroup之前检查重复的机器 sid。 我可以从机器 SID 获取计算机 SID(加入域)吗?

机器 SID 与域上计算机 object 的 SID 不同。 它们不一样。

根据这篇文章

为了确保唯一性,Setup 生成的 SID 具有一个固定的子权限值 (21) 和三个随机生成的子权限值(输出中“S-1-5-21”后面的数字)。

如果您想要域中计算机 object 的 SID,则必须通过计算机名称搜索 object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM