web-dev-qa-db-ja.com

C#でマシンの完全修飾ホスト名を見つけるにはどうすればよいですか?

例:abc.hyd.mycompany.comのようなものが欲しいです。私の要件は、この名前を解析して適切なサービスを初期化することです。

using System.Net;

Dns.GetHostName() // doesn't return fully qualified name it just gives "abc" 
30
user21246

次のようにDNS文字列全体を取得できる場合があります。

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

私が働いている本格的なDNS名はありませんが、ホスト名だけでなく、3レベルの偽のドメイン名が表示されます。

編集2011/03/17:以下のマークによって提案された組み込みの変更。

46
Powerlord

私はこれと非常によく似た方法を使用しました:

var serverName = System.Environment.MachineName; //Host name sans domain
var fqhn = System.Net.Dns.GetHostEntry(serverName).HostName; //fully qualified hostname
12
popofef

上記が機能しない場合は、環境から取得してみることもできます。

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