如何在 C# 中获取本地机器名称?

Posted

技术标签:

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

如何获取本地机器名?

【问题讨论】:

重复问题link How do I get the computer name in .NET的可能重复 【参考方案1】:

System.Environment.MachineName

除非machine name has more than 15 characters,否则它可以工作。

【讨论】:

对不起 :) 这些小问题有点像火鸡射击。我有点假设在我发布时会有 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();

【讨论】:

以上是关于如何在 C# 中获取本地机器名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C#/.NET 中查找本地机器的 FQDN?

C# - 连接到 (RAS) *** 时如何获取 IP 地址

如何在C#中获取机器的IP地址

如何使用 C# 在 Autocad 文件中获取标签名称

如何在 C# 中获取用户的国家/地区名称?

如何使用 c# 以编程方式将证书安装到本地机器存储中?