2008-09-12 9 views
1

Existe-t-il un moyen de découvrir l'alias réseau de la machine sur laquelle mon code s'exécute? Plus précisément, si mon groupe de travail voit ma machine en tant que // jekkedev01, comment puis-je récupérer ce nom par programmation?Recherche d'un alias réseau dans .net

Répondre

2

Étant donné que vous pouvez avoir plusieurs interfaces réseau, dont chacune peut avoir plusieurs adresses IP et qu'une seule adresse IP peut avoir plusieurs noms pouvant être résolus, il peut y en avoir plusieurs.

Si vous voulez connaître tous les noms par lesquels votre serveur DNS connaît votre machine, vous pouvez faire une boucle à travers eux tout comme ceci:

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

Utilisez la classe System.Environment. Il a une propriété pour récupérer le nom de l'ordinateur, qui est récupéré à partir de NetBIOS. À moins que je ne comprenne mal votre question.

+0

C'est le nom de la machine locale. Ce dont j'ai besoin, c'est l'alias réseau que le serveur de domaine a attaché à la machine. –

1

Si vous avez besoin de la description de l'ordinateur, il est stocké dans le registre:

  • clé: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  • Nom de valeur: srvcomment
  • type de données: REG_SZ (string)

AFAIK il n'a rien à voir avec dom un serveur, ou avec le réseau auquel le PC est attaché.

Pour tout ce qui concerne le réseau, je me sers de ce qui suit:

  • Nom NETBIOS: System.Environment.MachineName
  • nom d'hôte: System.Net.Dns.GetHostName()
  • nom DNS: System.Net.Dns.GetHostEntry("LocalHost").HostName

Si le PC a plusieurs noms NETBIOS, je ne connais pas d'autre méthode que de grouper les noms en fonction de l'adresse IP qu'ils résolvent, et même cela n'est pas fiable le si le PC a plusieurs interfaces réseau.

Questions connexes