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

Active directory 通过WinNT提供程序查询时,DirectoryEntry中的NativeGuid是什么?,active-directory,directoryservices,Active Directory,Directoryservices,我正在编写一个应用程序,我想与Active Directory和本地用户和组一起使用。我想我可以使用DirectoryEntry的NativeGuid属性作为唯一标识符,该标识符是使用WinNT提供程序针对LocalHost检索的。但是,在中使用以下代码,我会为这两个条目获得相同的NativeGuid。使用LDAP提供程序查询Active Directory似乎会产生独特的结果,但现在我不确定 System.DirectoryServices.DirectoryEntry localuserde

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

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");
有人能解释一下在使用WinNT提供程序时NativeGuid代表什么吗?是否有一个好的uniqueId替代方案,或者SID是一个更好的选择

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

谢谢


Shane Holder这是说不要使用NativeGuid。我会改用SID。

我认为SID可能是您在任何与用户和组相关的场景中的最佳选择。实际上没有其他唯一标识符-尤其是WinNT提供程序

有关讨论的更多信息,以及关于每个提供商真正公开的属性和名称的Excel表格,请访问Richard Mueller's。Richard是一名ADSI MVP,对于任何对Active Directory和LDAP感兴趣的人来说,他都有非常好的内容

马克