1

コードが実行されているマシンのネットワーク エイリアスを .net 2.0 で検出する方法はありますか? 具体的には、ワークグループが自分のマシンを //jekkedev01 として認識している場合、その名前をプログラムで取得するにはどうすればよいですか?

4

5 に答える 5

2

それぞれが複数の IP を持つことができる複数のネットワーク インターフェイスを持つことができ、単一の IP はそれに解決できる複数の名前を持つことができるため、複数存在する可能性があります。

DNS サーバーがマシンを認識しているすべての名前を知りたい場合は、次のようにすべての名前をループできます。

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;
}
于 2008-10-27T10:14:46.683 に答える
1

私は .NET プログラマーではありませんが、System.Net.DNS.GetHostEntryメソッドは必要なもののように見えます。Aliasesプロパティを含むIPHostEntryクラスのインスタンスを返します。

于 2008-10-23T20:43:42.147 に答える
1

コンピュータの説明が必要な場合は、次のレジストリに保存されています。

  • 鍵:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
  • 値の名前:srvcomment
  • データ・タイプ:REG_SZ (string)

私の知る限り、ドメインサーバーやPCが接続されているネットワークとは何の関係もありません。

ネットワークに関連するものについては、次のものを使用しています。

  • NETBIOS 名:System.Environment.MachineName
  • ホスト名:System.Net.Dns.GetHostName()
  • DNS 名:System.Net.Dns.GetHostEntry("LocalHost").HostName

PC に複数の NETBIOS 名がある場合、名前が解決される IP アドレスに基づいて名前をグループ化する以外の方法はわかりません。PC に複数のネットワーク インターフェイスがある場合、これでも信頼できません。

于 2008-10-23T09:08:13.690 に答える
0

または My.Computer.Name

于 2008-09-12T19:12:00.177 に答える
0

System.Environmentクラスを使用します。NetBios から取得されるマシン名を取得するためのプロパティがあります。私があなたの質問を誤解していない限り。

于 2008-09-12T18:46:59.627 に答える