我正在使用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执行此操作,我猜它是一个八位字符串的东西,但我无法弄明白。
答案 0 :(得分:11)
优秀的forums(Joe Kaplan / Ryan Dunn)伴随的The .NET Developer's Guide to Directory Services Programming是这类信息的绝佳来源。
查看此标题为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而不是连续地将字符串连接在一起来稍微优化 - 但是看起来相当简单。
希望这有帮助。
马克
答案 1 :(得分:3)
...
searcher.PropertiesToLoad.Add("objectGUID");
SearchResultCollection found = found = searcher.FindAll();
foreach (SearchResult result in found)
{
Guid oGuid = new Guid((byte[])result.Properties["objectGUID"][0]);
}
...
答案 2 :(得分:2)
要获取ADExplorer可以使用的Octet字符串,请将这些步骤应用于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