【问题标题】:Object GUID from AD for a user来自 AD 的用户的对象 GUID
【发布时间】:2014-12-01 13:54:16
【问题描述】:

我的任务是查找对象 guid 和最终用户。我正在使用 C# 来查找它。在阅读了有关该主题的几篇文章后,我使用 DirectoryEntry 类来查找 AD 用户详细信息。查询 AD 后来自 SearchResult 对象的数据为我提供了 objectguid,但这并不完全是 .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. 如果第一个选项中的 GUID 是正确的,我有什么方法可以找到更好的方法(相对于它所花费的时间)?

感谢您的宝贵时间。

【问题讨论】:

  • 对于第一种情况,获得正确 GUID 的更简单方法是 Guid userGuid = searchResult.GetDirectoryEntry().Guid; 但首选第二种方法,因为第一种情况会生成更多 AD 访问权限以绑定 DirectoryEntry

标签: c# active-directory


【解决方案1】:

来自 cmets,
对于第一种情况,获取正确 GUID 的更简单方法是 Guid userGuid = searchResult.GetDirectoryEntry().Guid;但首选第二种,因为第一种情况会生成更多的 AD 访问权限来绑定 DirectoryEntry。

这只是两者之间的编码差异(本机与常规),但值是相同的。如果可以,请始终避免使用 searchResult.GetDirectoryEntry() 方法。它会从字面上再次从 AD 获得完整记录。当您真的只需要两个字段时,您不会希望选择两个字段然后返回并全部选择它们。

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多