【问题标题】:How do I get the local machine name in C#?如何在 C# 中获取本地机器名称?
【发布时间】:2010-10-14 07:40:46
【问题描述】:

如何获取本地机器名?

【问题讨论】:

标签: c# dns hostname


【解决方案1】:

【讨论】:

  • 对不起 :) 这些小问题有点像火鸡射击。我有点假设在我发布时会有 4 个答案。
  • 请注意,在 Android 上的 .NET Standard 中,这似乎返回“localhost”
【解决方案2】:

source

获取本地网络/机器名称的四种方法:

string name = Environment.MachineName;
string name = System.Net.Dns.GetHostName();
string name = System.Windows.Forms.SystemInformation.ComputerName;
string name = System.Environment.GetEnvironmentVariable("COMPUTERNAME");

更多信息请访问: Difference between SystemInformation.ComputerName, Environment.MachineName, and Net.Dns.GetHostName

【讨论】:

    【解决方案3】:

    您应该可以为此使用System.Environment.MachineName。它是一个属性,返回一个包含计算机的 netBIOS 名称的字符串:

    http://msdn.microsoft.com/en-us/library/system.environment.machinename.aspx

    【讨论】:

      【解决方案4】:

      如果要本地计算机的FQDN(全限定域名),可以使用

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

      其他方法将只返回本地名称,没有任何特定于域的信息。例如,对于计算机myComp.myDomain.com,前面的方法将返回myComp,而GetHostEntry 方法将返回myComp.myDomain.com

      【讨论】:

      • 在计算机设置中有一个计算机名和完整计算机名的部分——这是我找到的在其他人只提供计算机名时获取完整计算机名的唯一方法。谢谢!
      • 嗯,只给我localhost,而不是FQDN
      【解决方案5】:

      我的计算机名称超过 15 个字符,所以我使用 hostname.exe 来获取全长名称:

      Process proc = new Process();
      proc.StartInfo.UseShellExecute = false;
      proc.StartInfo.RedirectStandardOutput = true;
      proc.StartInfo.FileName = "c:/windows/system32/hostname.exe";
      proc.Start();
      var hostName = proc.StandardOutput.ReadLine();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-11
        • 2022-11-02
        • 1970-01-01
        • 2011-08-01
        • 2011-06-14
        • 2016-06-29
        • 1970-01-01
        • 2013-04-25
        相关资源
        最近更新 更多