L'acquisizione del nome di dominio NETBIOS da un nome di dominio di Active Directory completamente qualificato è talvolta un'operazione noiosa. Ho trovato una buona risposta here.Come ottenere il nome dominio NETBIOS utilizzando l'FQDN in un ambiente complesso
In un ambiente con più foreste questo approccio tuttavia non funzionerà se il PC non si trova nella foresta che si sta interrogando. Questo perché LDAP://RootDSE
interrogherà le informazioni per il dominio del computer.
Alcuni potrebbero chiedere: perché così complicato? Basta usare il nome prima del primo punto recuperato da:
ActiveDirectory.Domain.GetComputerDomain().Name;
O semplicemente ottenere il nome di dominio dell'utente:
Environment.GetEnvironmentVariable("USERDOMAIN");
o
Environment.UserDomainName;
ma il nome di dominio NetBIOS può essere qualcosa di completamente diverso, e tu o il tuo computer potrebbe essere in un dominio o una foresta diversi! Quindi questo approccio è utilizzabile solo in un ambiente semplice.
DJ KRAZE’s soluzione richiede solo una piccola modifica per consentire query tra domini. Questo presuppone una relazione di fiducia!
private string GetNetbiosDomainName(string dnsDomainName)
{
string netbiosDomainName = string.Empty;
DirectoryEntry rootDSE = new DirectoryEntry(string.Format("LDAP://{0}/RootDSE",dnsDomainName));
string configurationNamingContext = rootDSE.Properties["configurationNamingContext"][0].ToString();
DirectoryEntry searchRoot = new DirectoryEntry("LDAP://cn=Partitions," + configurationNamingContext);
DirectorySearcher searcher = new DirectorySearcher(searchRoot);
searcher.SearchScope = SearchScope.OneLevel;
searcher.PropertiesToLoad.Add("netbiosname");
searcher.Filter = string.Format("(&(objectcategory=Crossref)(dnsRoot={0})(netBIOSName=*))", dnsDomainName);
SearchResult result = searcher.FindOne();
if (result != null)
{
netbiosDomainName = result.Properties["netbiosname"][0].ToString();
}
return netbiosDomainName;
}
Si dovrebbe scrivere questo in Q & A formato, o (forse) la tua risposta migliorata dovrebbe andare con la domanda originale. –
La mia richiesta di modifica è stata rifiutata perché "La modifica cambia troppo nel post originale" – Daro
Pubblicalo come risposta separata. Qualcuno con più rappresentanti dovrebbe essere in grado di unirli in seguito. –