Cómo obtener el nombre de dominio NETBIOS usando el FQDN en un entorno complejo

Obtener el nombre de dominio NETBIOS de un nombre de dominio de Active Directory completo es a veces una tarea tediosa. Encontré una buena respuestaaquí.

Sin embargo, en un entorno con múltiples bosques, este enfoque no funcionará si la PC no está en el bosque que está consultando. Esto es porqueLDAP://RootDSE Consultará información para el dominio de la computadora.

Algunos podrían preguntar: ¿por qué tan complicado? Solo use el nombre antes del primer punto recuperado por:

ActiveDirectory.Domain.GetComputerDomain().Name;

O simplemente obtener el nombre de dominio del usuario:

Environment.GetEnvironmentVariable("USERDOMAIN");

o

Environment.UserDomainName;

¡PERO el nombre de dominio NETBIOS puede ser algo completamente diferente, y usted o su computadora podrían estar en un dominio o bosque diferente! Por lo tanto, este enfoque solo se puede utilizar en un entorno simple.

DJ KRAZE's La solución solo necesita una pequeña modificación para permitir consultas entre dominios. ¡Esto supone una relación de confianza!

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;
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta