2009-02-12 19 views

Respuesta

42

Usted puede ser capaz de obtener toda la cadena de DNS así:

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

No tenemos pleno derecho nombres DNS en la que trabajo, pero sí dame un dominio falso de tres niveles nombre en lugar de solo el nombre de host.

Editar 2011/03/17: cambios incorporados sugeridos por la marca a continuación.

+1

Mejor aún pasar la cadena vacía "" a GetHostEntry. Esto produce el mismo resultado, pero se siente mejor. – mark

+0

@mark: tienes razón, lo hace, y es una instrucción menos de procesar. No sé cómo me perdí eso. Se siente un poco extraño actualizar una respuesta de hace dos años, pero ... – Powerlord

+0

¿Funciona de la misma manera en XP que en Win7? El código de ejemplo dado antes de la edición reciente da nombre de host calificado en Win7 pero solo da un nombre no calificado en XP. Quiere un código que funcione en ambos. Gracias. –

2

Si lo anterior no funciona, también puede intentar recuperarlo del medio ambiente:

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

Es posible que esto no funcione: USERDNSDOMAIN puede no ser el mismo que el dominio al que pertenece la máquina. – pduncan

10

que utilizan este método muy similar:

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