【问题标题】:Searching for a objectGUID in AD在 AD 中搜索 objectGUID
【发布时间】:2009-10-09 19:23:50
【问题描述】:

我正在使用 Mark Russinovich 的 Active Directory Explorer。 这是一个很棒的工具。

我正在使用它来导航活动目录,以确保我的使用 .NET 中的 DirectorySearcher 的程序返回正确的数据。

但发生了一些事情,当我尝试使用 DirectorySearcher 在我的程序中搜索 objectGUID 时,如果我将实际的 GUID 作为字符串传递,它不会返回任何内容,就像我使用 Active Directory Explorer,当我添加

objectGuid 值为 f8d764ff-9a6a-418e-a641-b6f99661a8d5,其搜索子句变为: (objectGUID=\FFd\D7\F8j\9A\8EA\A6A\B6\F9\96a\A8\D5*)

如何在我的程序中为 directorySearcher 执行此操作,我猜这是一个八位字节字符串,但我无法弄清楚。

【问题讨论】:

    标签: .net active-directory directoryservices


    【解决方案1】:

    forums 伴随着出色的 The .NET Developer's Guide to Directory Services Programming(Joe Kaplan / Ryan Dunn)是此类信息的绝佳来源。

    在此处查看名为 Find the object using objectGuid property 的主题,该主题展示了如何将“常规”GUID 转换为 S.DS“OctetString”格式。

    internal string ConvertGuidToOctetString(string objectGuid)
    {
       System.Guid guid = new Guid(objectGuid);
       byte[] byteGuid = guid.ToByteArray();
    
       string queryGuid = "";
    
       foreach (byte b in byteGuid)
       {
           queryGuid += @"\" + b.ToString("x2");
       }
    
       return queryGuid; 
    }
    

    这可以通过使用 StringBuilder 而不是连续连接一个字符串来稍微优化 - 但否则它看起来相当简单。

    希望这会有所帮助。

    马克

    【讨论】:

    • 哇,这花了一分钟才找到!我将添加这是我自己使用 Novell.Directory.Ldap.NETStandard 库正确获取搜索功能来解析我的 Guid 所需要的...ldapConnection.Search("baseDn", LdapConnection.SCOPE_ONE, "objectGUID =" + ConvertGuidToOctetString(objectGUID), attrs, false);
    【解决方案2】:
    ...
    searcher.PropertiesToLoad.Add("objectGUID");
    
    SearchResultCollection found = found = searcher.FindAll();
    
    foreach (SearchResult result in found)
    {
       Guid oGuid = new Guid((byte[])result.Properties["objectGUID"][0]);
    }
    ...
    

    【讨论】:

      【解决方案3】:

      要获得 ADExplorer 可用的八位字节字符串,请将以下步骤应用于 GUID 字符串:

      • GUID 首先大写:

      F8D764FF-9A6A-418E-A641-B6F99661A8D5

      • 将每个破折号分成五个部分:

      F8D764FF, 9A6A, 418E, A641, B6F99661A8D5

      • 将每个部分分成字节(每个两个十六进制数字):

      {F8, D7, 64, FF}, {9A, 6A}, {41, 8E}, {A6, 41}, {B6, F9, 96, 61, A8, D5}

      • 反转前三个部分的字节:

      {FF, 64, D7, F8}, {6A, 9A}, {8E, 41}, {A6, 41}, {B6, F9, 96, 61, A8, D5}

      • 忽略分割:

      FF, 64, D7, F8, 6A, 9A, 8E, 41, A6, 41, B6, F9, 96, 61, A8, D5

      • 在每个字节前加上反斜杠:

      \FF, \64, \D7, \F8, \6A, \9A, \8E, \41, \A6, \41, \B6, \F9, \96, \61, \A8, \D5

      • 连接字节:

      \FF\64\D7\F8\6A\9A\8E\41\A6\41\B6\F9\96\61\A8\D5

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多