我正在使用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执行此操作,我猜这是一个八位位组字符串,但我无法弄清楚。
最佳答案
出色的forums(Joe Kaplan/Ryan Dunn)随附的The .NET Developer's Guide to Directory Services Programming是此类信息的绝佳来源。
在这里 checkout 名为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而不是连续地将字符串串联在一起,可以对它进行一些优化-否则看起来就很简单了。
希望这可以帮助。
马克