Dot-Net

在 AD 中搜尋 objectGUID

  • February 13, 2022

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

我正在使用它來導航活動目錄,以確保我使用 .NET 中的 DirectorySearcher 的程序返回正確的數據。

但是發生了一些事情,當我嘗試使用 DirectorySearcher 在我的程序中搜尋 objectGUID 時,如果我將實際的 GUID 作為字元串傳遞,它不會返回任何內容,就像我使用Active Directory Explorer一樣,當我添加

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

如何在我的程序中為 directorySearcher 執行此操作,我猜這是一個八位字節字元串的東西,但我無法弄清楚。

優秀的 .NET 開發人員目錄服務程式指南(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 而不是連續連接一個字元串來稍微優化 - 但否則它看起來相當簡單。

希望這可以幫助。

馬克

引用自:https://stackoverflow.com/questions/1545630