Uzyskanie nazwy domeny NETBIOS z w pełni kwalifikowanej nazwy domeny Active Directory jest czasami żmudnym zadaniem. Znalazłem dobrą odpowiedź here.Jak uzyskać nazwę domeny NETBIOS przy użyciu nazwy FQDN w złożonym środowisku?
W środowisku z wieloma lasami takie podejście nie będzie jednak działać, jeśli komputer nie znajduje się w szukanym lesie. Dzieje się tak, ponieważ LDAP://RootDSE
będzie wyszukiwać informacje dotyczące domeny komputera.
Niektórzy mogą zapytać: dlaczego tak skomplikowane? Wystarczy użyć nazwy przed pierwszą kropką pobierane przez:
ActiveDirectory.Domain.GetComputerDomain().Name;
lub po prostu dostać nazwę domeny użytkownika:
Environment.GetEnvironmentVariable("USERDOMAIN");
lub
Environment.UserDomainName;
ale nazwa NetBIOS domeny może być coś zupełnie inny, a ty lub twój komputer może być w innej domenie lub lesie! Tak więc to podejście jest możliwe do zastosowania tylko w prostym środowisku.
DJ KRAZE’s rozwiązanie wymaga tylko jednej małej modyfikacji, aby umożliwić kwerendy międzydomenowe. Zakłada to związek zaufania!
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;
}
Należy napisać to w Q & A formacie lub (ewentualnie) swój poprawiona odpowiedź powinna iść z pierwotnym pytaniem. –
Moje żądanie edycji zostało odrzucone, ponieważ "Zmiana zbyt wiele w oryginalnym wpisie". – Daro
Opublikuj jako osobną odpowiedź. Ktoś, kto ma więcej przedstawicieli, powinien móc je później scalić. –