UserPrincipal对象中的域名在哪里?

EMP*_*EMP 10 .net directoryservices active-directory

我正在使用这些System.DirectoryServices.ActiveDirectory类来查找所有Active Directory用户.代码很简单:

var context = new PrincipalContext(ContextType.Domain);
var searcher = new PrincipalSearcher(new UserPrincipal(context));
var results = searcher.FindAll();
Run Code Online (Sandbox Code Playgroud)

我希望以"友好"(又称"Windows 2000之前"格式)获得域限定用户名,例如."CONTOSO\SmithJ".UserPrincipal.SamAccountName给我用户名部分,但我如何获得域名部分?我不能假设域将与机器或当前用户的域相同.

JPB*_*anc 6

对于AD DS,值为msDS-PrincipalNameNetBIOS域名,后跟反斜杠("\").

您可以使用以下方式找到它

/* Retreiving the root domain attributes
 */ 
sFromWhere = "LDAP://DC_DNS_NAME:389/dc=dom,dc=fr"; 
DirectoryEntry deBase = new DirectoryEntry(sFromWhere, "AdminLogin", "PWD"); 

DirectorySearcher dsLookForDomain = new DirectorySearcher(deBase); 
dsLookForDomain.Filter = "(objectClass=*)"; 
dsLookForDomain.SearchScope = SearchScope.base; 
dsLookForDomain.PropertiesToLoad.Add("msDS-PrincipalName"); 

SearchResult srcDomains = dsLookForDomain.FindOne();
Run Code Online (Sandbox Code Playgroud)