用户从 AD 提供的对象 GUID

本文关键字:对象 GUID AD 用户 | 更新日期: 2023-09-27 18:32:42

我有一个任务来查找对象和最终用户的guid。我正在使用 C# 来查找它。在阅读了有关此主题的几篇文章后,我使用DirectoryEntry类来查找AD用户详细信息。查询 AD 后来自 SearchResult 对象的数据为我提供了对象指南,但这并不完全是 .net 术语中的 GUID。我必须将其更改为适当的 guid,以便在应用程序中使用它。当我在互联网上搜索有关将 objectguid 转换为 GUID 的信息时,我发现了两种不同的方法,如下所述

第一个:

DirectoryEntry de = searchResult.GetDirectoryEntry();
Guid userGuid = new Guid(de.NativeGuid);

第二个:

Guid userGuid = new Guid((byte[]) searchResult.Properties["objectguid"][0]);

两者都给了我一个 GUID,但它们是不同的。我不明白该考虑哪一个。由于我必须为大约 50000 条记录执行此操作,因此第一个选项花费了我相当多的时间,这在我的场景中是不可接受的。第二个选项不会花费太多时间,但我不确定以这种方式创建的 GUID 是否正常。

我的问题是

  1. 我在AD用户的第二个选项中获得的用户guid是正确的
  2. 使用吗?
  3. 如果第一个选项中的 GUID 是正确的,我有什么方法可以找到更好的方式(考虑到它所花费的时间(?

谢谢你的时间。

用户从 AD 提供的对象 GUID

从评论中,
对于第一种情况,获取正确 GUID 的更简单方法是 Guid userGuid = searchResult.GetDirectoryEntry((。吉德;但第二个是首选,因为情况一将生成更多的 AD 访问权限来绑定目录条目。

它只是两者之间的编码差异(本机与常规(,但值是相同的。如果可以的话,总是避免点击searchResult.GetDirectoryEntry((方法。它实际上会从 AD 再次获得完整记录。您不想选择两个字段,然后在您实际上只需要这两个字段时返回并全部选择它们。