Dot-Net
在 AD 中搜尋 objectGUID
我正在使用 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 而不是連續連接一個字元串來稍微優化 - 但否則它看起來相當簡單。
希望這可以幫助。
馬克