通过WinNT提供程序查询时,DirectoryEntry中的NativeGuid是什么?

时间:2009-05-14 20:23:46

标签: active-directory directoryservices

我正在编写一个我希望与Active Directory以及本地用户和组一起工作的应用程序。我以为我可以使用DirectoryEntry的NativeGuid属性作为唯一标识符,该标识符是使用针对LocalHost的WinNT提供程序检索的。但是,使用LinqPad中的以下代码,我得到两个条目的相同NativeGuid。使用LDAP提供程序查询Active Dirctory似乎会产生独特的结果,但现在我不确定。

System.DirectoryServices.DirectoryEntry localuserde = 
  new System.DirectoryServices.DirectoryEntry("WinNT://localhost/localuser");
localuserde.NativeGuid.Dump("localUser Guid");

System.DirectoryServices.DirectoryEntry adminde = 
new System.DirectoryServices.DirectoryEntry("WinNT://localhost/administrator");
adminde.NativeGuid.Dump("administrator Guid");

有人可以解释一下NativeGuid在使用WinNT提供程序时所代表的内容,对于uniqueId是否有一个很好的选择,或者SID是更好的选择?

要在LinqPad中运行上面命中F4并将System.DirectoryServices.dll添加到程序集列表中。然后确保localuser存在或将名称更改为系统上的本地用户。然后点击F5。

谢谢,

Shane Holder

2 个答案:

答案 0 :(得分:0)

other question表示不使用NativeGuid。我会改用“SID”。

答案 1 :(得分:0)

我认为SID可能是您在此处与用户和群组相关的任何方案中最好的选择。实际上没有其他唯一标识符 - 特别是WinNT提供商没有。

有关WinNT vs. LDAP讨论的更多信息以及有关每个提供商真正公开的属性(及其名称)的Excel表格,请访问Richard Mueller的Hilltop Lab。 Richard是ADSI的MVP,对于任何对Active Directory和LDAP感兴趣的人都有很好的内容。

马克