Pregunta

¿Hay alguna forma en .net 2.0 de descubrir el alias de red de la máquina en la que se ejecuta mi código?Específicamente, si mi grupo de trabajo ve mi máquina como //jekkedev01, ¿cómo recupero ese nombre mediante programación?

¿Fue útil?

Solución

Dado que puede tener múltiples interfaces de red, cada una de las cuales puede tener múltiples IP, y cualquier IP puede tener múltiples nombres que puedan resolverse, puede haber más de una.

Si desea conocer todos los nombres por los cuales su servidor DNS conoce su máquina, puede recorrerlos todos de esta manera:

public ArrayList GetAllDnsNames() {
  ArrayList names = new ArrayList();
  IPHostEntry host;
  //check each Network Interface
  foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) {
    //check each IP address claimed by this Network Interface
    foreach (UnicastIPAddressInformation i in nic.GetIPProperties().UnicastAddresses) {
      //get the DNS host entry for this IP address
      host = System.Net.Dns.GetHostEntry(i.Address.ToString());
      if (!names.Contains(host.HostName)) {
        names.Add(host.HostName);
      }
      //check each alias, adding each to the list
      foreach (string s in host.Aliases) {
        if (!names.Contains(s)) {
          names.Add(s);
        }
      }
    }
  }
  //add "simple" host name - above loop returns fully qualified domain names (FQDNs)
  //but this method returns just the machine name without domain information
  names.Add(System.Net.Dns.GetHostName());

  return names;
}

Otros consejos

Si necesita la descripción de la computadora, se almacena en el registro:

  • llave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  • nombre del valor: srvcomment
  • tipo de datos: REG_SZ (string)

AFAIK, no tiene nada que ver con ningún servidor de dominio ni con la red a la que está conectada la PC.

Para todo lo relacionado con la red, estoy usando lo siguiente:

  • Nombre de NETBIOS: System.Environment.MachineName
  • nombre de host: System.Net.Dns.GetHostName()
  • Nombre DNS: System.Net.Dns.GetHostEntry("LocalHost").HostName

Si la PC tiene varios nombres NETBIOS, no conozco otro método que agrupar los nombres según la dirección IP a la que se resuelven, e incluso esto no es confiable si la PC tiene múltiples interfaces de red.

No soy un programador .NET, pero el System.Net.DNS.GetHostEntry El método se parece a lo que necesitas.Devuelve una instancia del EntradaIPHost clase que contiene el Alias propiedad.

Utilizar el Sistema.Entorno clase.Tiene una propiedad para recuperar el nombre de la máquina, que se recupera de NetBios.A menos que no entienda bien tu pregunta.

o Nombre.de.mi.computadora

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top