2009-02-12 4 views

Répondre

42

Vous pouvez être en mesure d'obtenir toute la chaîne de DNS comme ceci:

System.Net.Dns.GetHostEntry("").HostName 

Nous n'avons pas les noms de DNS à part entière où je travaille, mais il ne me donne un domaine faux à trois niveaux nom au lieu de seulement le nom d'hôte.

Édition 2011/03/17: Modifications incorporées suggérées par la marque ci-dessous.

+1

Mieux encore la chaîne vide « » à GetHostEntry. Cela donne le même résultat, mais se sent mieux. – mark

+0

@mark: Vous avez raison, c'est le cas, et c'est une instruction de moins à traiter. Je ne sais pas comment j'ai raté ça. On se sent un peu bizarre de mettre à jour une réponse d'il y a deux ans, mais ... – Powerlord

+0

Est-ce que ça fonctionne de la même manière sur XP que Win7? L'exemple de code donné avant l'édition récente donne un nom d'hôte qualifié sur Win7 mais ne donne qu'un nom non qualifié sur XP. Vous voulez du code qui fonctionne sur les deux. Merci. –

2

Si le travail ne ci-dessus ne, vous pouvez aussi essayer de le récupérer de l'environnement:

var dnsName = new StringBuilder(); 
dnsName.Append(Environment.GetEnvironmentVariable("COMPUTERNAME")).Append("."); 
dnsName.Append(Environment.GetEnvironmentVariable("USERDNSDOMAIN")); 
+5

Cela peut ne pas fonctionner - USERDNSDOMAIN peut ne pas être identique au domaine auquel appartient la machine. – pduncan

10

J'ai utilisé cette méthode très similaire: passer

var serverName = System.Environment.MachineName; //host name sans domain 
var fqhn = System.Net.Dns.GetHostEntry(serverName).HostName; //fully qualified hostname 
Questions connexes