2009-02-12 19 views

cevap

42

Böyle tüm DNS dize almak mümkün olabilir:

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

Biz çalıştığım tam teşekküllü bir DNS adları yok, ama bana üç seviyeli sahte etki alanını vermek yok sadece hostname yerine isim.

Düzenleme 2011/03/17: Aşağıdaki işaret tarafından önerilen eklenmiş değişiklikler.

+1

İyisi boş bir dize" pass:

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

+0

@mark: Haklısın, öyle ve işlenmesi gereken daha az bir talimat. Bunu nasıl özledim bilmiyorum. İki yıl önce bir cevabı güncellemek garip geliyor, ama ... – Powerlord

+0

Bu, XP'de Win7 olarak aynı şekilde çalışıyor mu? Son düzenlemeden önce verilen örnek kod, Win7'de nitelikli ana bilgisayar adı verir, ancak yalnızca XP'de niteliksiz bir ad verir. Her ikisinde de çalışan kod ister. Teşekkürler. –

2

yukarıda çalışmazsa, ayrıca çevre üzerinden elde deneyebilirsiniz: "

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

Bu işe yaramayabilir - USERDNSDOMAIN, makinenin ait olduğu etki alanıyla aynı olmayabilir. – pduncan

10

Bu çok benzer bir yöntem kullanıldı GetHostEntry için. Bu aynı sonucu verir, ancak daha iyi hisseder.
İlgili konular