Frage

Gibt es eine Möglichkeit in .net 2.0 das Netzwerk alias für die Maschine zu entdecken, dass mein Code auf ausgeführt wird? Insbesondere dann, wenn meine Arbeitsgruppe meine Maschine als // jekkedev01 sieht, wie rufe ich diesen Namen programmatisch?

War es hilfreich?

Lösung

Da Sie mehrere Netzwerkschnittstellen haben können, von denen jede mehrere IPs haben kann, und jede einzelne IP mehrere Namen haben können, die es lösen können, kann es mehr als eine.

Wenn Sie alle Namen kennen, mit dem DNS-Server Ihre Maschine kennt, können Sie Schleife durch sie alle wie folgt aus:

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

Andere Tipps

Wenn Sie den Computer Beschreibung benötigen, wird es in der Registry gespeichert:

  • -Taste: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  • Wertname: srvcomment
  • Datentyp: REG_SZ (string)

AFAIK es nichts mit jedem Domain-Server oder mit dem Netzwerk zu tun, wird der PC an.

Für alles, was mit dem Netz bezogen, ich bin mit dem folgend:

  • NETBIOS Name: System.Environment.MachineName
  • Hostname: System.Net.Dns.GetHostName()
  • DNS-Name: System.Net.Dns.GetHostEntry("LocalHost").HostName

Wenn der PC mehr NetBIOS-Namen hat, ich kenne keine andere Methode, sondern zu einer Gruppe, die anhand Namen auf der IP-Adresse sie lösen, und auch dies ist nicht zuverlässig, wenn der PC mehrere Netzwerkschnittstellen hat.

Ich bin kein .NET-Programmierer, aber die IPHostEntry Klasse, die enthält die Aliases Eigenschaft.

Mit der System.Environment Klasse. Es verfügt über eine Eigenschaft für die Computernamen abrufen, die sie von den NetBios abgerufen wird. Es sei denn, ich bin Missverständnis Ihre Frage.

oder My.Computer.Name

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top