Domanda

Esiste un modo in .net 2.0 per scoprire l'alias di rete per la macchina su cui è in esecuzione il mio codice?Nello specifico, se il mio gruppo di lavoro vede la mia macchina come //jekkedev01, come posso recuperare quel nome a livello di codice?

È stato utile?

Soluzione

Poiché è possibile avere più interfacce di rete, ognuna delle quali può avere più IP, e ogni singolo IP può avere più nomi che possono essere risolti, potrebbe essercene più di uno.

Se vuoi conoscere tutti i nomi con cui il tuo server DNS conosce la tua macchina, puoi scorrerli tutti in questo modo:

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

Altri suggerimenti

Se è necessaria la descrizione del computer, è archiviata nel registro:

  • chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  • nome valore: srvcomment
  • tipo di dati: REG_SZ (string)

Per quanto ne so, non ha nulla a che fare con alcun server di dominio o con la rete a cui è collegato il PC.

Per qualsiasi cosa relativa alla rete, sto utilizzando quanto segue:

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

Se il PC ha più nomi NETBIOS, non conosco altro metodo se non quello di raggruppare i nomi in base all'indirizzo IP a cui si risolvono, e anche questo non è affidabile se il PC ha più interfacce di rete.

Non sono un programmatore .NET, ma il System.Net.DNS.GetHostEntry il metodo assomiglia a quello che ti serve.Restituisce un'istanza di IPHostEntry classe che contiene il file Alias proprietà.

Usa il Sistema.Ambiente classe.Ha una proprietà per recuperare il nome della macchina, che viene recuperato da NetBios.A meno che non abbia frainteso la tua domanda.

o Nome.Mio.Computer

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top