【问题标题】:How to get domain sid from domain dns name?如何从域 dns 名称中获取域 sid?
【发布时间】:2011-08-11 08:44:16
【问题描述】:

我有一个 Active Directory 域的 dns 名称,我想获取该域的域 sid。我该怎么做?

我已经有以下:

var domainContext =
    new DirectoryContext(DirectoryContextType.Domain, domainDnsName);
var domain = Domain.GetDomain(domainContext);
var dc = domain.DomainControllers.OfType<DomainController>().FirstOrDefault();

但我有点不知道从这里去哪里(或者我走错了路)。

【问题讨论】:

    标签: active-directory directoryservices


    【解决方案1】:

    你想要的是这样的:

    DirectoryEntry domainEntry = domain.GetDirectoryEntry();
    byte[] domainSid = domainEntry.Properties["objectSID"].Value as byte[];
    SecurityIdentifier strongDomainSid = new SecurityIdentifier(domainSid, 0);
    

    【讨论】:

    • 那行不通:Domain 没有方法GetDirectoryEntry()DomainController 可以,但它返回一个 DirectoryEntry 而没有 objectSid...
    • MSDN 说有 - msdn.microsoft.com/en-us/library/…。如果不是出于任何原因,让自己变得微不足道。只需为域的 DN 创建一个新的 DirectoryEntry(例如 var de = new DirectoryEntry("LDAP://dc=mydomain,dc=com")。如果没有别的,您应该能够从域对象中获取 DN。
    • 嗯,忽略了那个...不确定默认命名上下文是否有 objectSID。周末后会调查。到目前为止谢谢!
    • 确实如此 - 每个域都有一个 SID
    • 它有效。奇怪的是我忽略了Domain.GetDirectoryEntry 方法。谢谢。
    【解决方案2】:

    如果您使用本机代码。

    1. 为您想要的域构建 ldap 查询字符串。例如。 “LDAP://fabrikam.com”(不必是可区分的形式,例如“LDAP://DC=fabrikam,DC.com”1

      String path = "LDAP://fabrikam.com";
      
    2. 获取代表域的ADs对象

      IADs domain = ADsGetObject(path);
      
    3. 获取域对象的objectSid字节数组属性:

      Variant objectSid = domain.Get("objectSid");
      
    4. 将二进制 sid 转换为字符串:

      Pointer p = SafeArrayAccessData(objectSid);
      String domainSid = ConvertSidToStringSid(p);
      

    它会返回漂亮的域 sid:

    String GetDomainSid(String domainName)
    {
       Variant objectSid = ADSGetObject(domainName).Get("objectSid");
       Pointer p = SafeArrayAccessData(objectSid);
       String domainSid = ConvertSidToStringSid(p);       
       SafeArrayUnaccessData(objectSid);
    
       return domainSid;
    }
    
    GetDomainSid("fabrikam.com") ==> "S-1-5-21-1708537768-844245398-2146844275"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      相关资源
      最近更新 更多