C# 如何在.NET中获取计算机名
如何在.NET c#System.Environment.MachineName中获取计算机名C# 如何在.NET中获取计算机名,c#,.net,C#,.net,如何在.NET c#System.Environment.MachineName中获取计算机名 或者,如果您使用的是Winforms,则可以使用System.Windows.Forms.SystemInformation.ComputerName,它返回的值与System.Environment.MachineName的值完全相同。您可以使用访问机器名。 从控制台或WinForms应用程序 从web应用程序 获取FQDN的步骤 查看最后一个是否没有提供FQDN,您是否需要它 请参阅有关的详细信
或者,如果您使用的是Winforms,则可以使用
System.Windows.Forms.SystemInformation.ComputerName
,它返回的值与System.Environment.MachineName
的值完全相同。您可以使用访问机器名。- 从控制台或WinForms应用程序
- 从web应用程序
- 获取FQDN的步骤
请参阅有关的详细信息还有一种方法:Windows管理工具
using System.Management;
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT Name FROM Win32_ComputerSystem");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_ComputerSystem instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Name: {0}", queryObj["Name"]);
}
}
catch (ManagementException e)
{
// exception handling
}
试试这个:
string[] computer_name = System.Net.Dns.GetHostEntry(System.Web.HttpContext.Current.Request.ServerVariables["remote_addr"]).HostName.Split(new Char[] { '.' });
return computer_name[0].ToString();
我将web项目的
括号的.InnerHtml设置为用户的计算机名,执行以下操作:
HTML:
2个更有用的方法:
System.Environment.GetEnvironmentVariable(“ComputerName”)
System.Environment.GetEnvironmentVariable(“ClientName”)获取通过Citrix XenApp或终端服务(又名RDS、RDP、远程桌面)连接的用户PC的名称。试试这个
public static string GetFQDN()
{
string domainName = NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName;
string hostName = Dns.GetHostName();
string fqdn;
if (!hostName.Contains(domainName))
fqdn = hostName + "." +domainName;
else
fqdn = hostName;
return fqdn;
}
下面给出了获取机器名或计算机名的一些方法 方法1:-
string MachineName1 = Environment.MachineName;
方法2:-
string MachineName2 = System.Net.Dns.GetHostName();
方法3:-
string MachineName3 = Request.ServerVariables["REMOTE_HOST"].ToString();
方法4:-
string MachineName4 = System.Environment.GetEnvironmentVariable("COMPUTERNAME");
要了解更多信息,请使用这一行使其变得简单
Environment.MachineName;
@特凡福森:有什么区别?我是说,什么时候我应该用哪一个?这是否有任何安全隐患?我会从控制台或winforms应用程序使用第一个,从web应用程序使用第二个,如果需要获取FQDN,则使用第三个。有关所需权限的信息,请参阅参考文档。@tvanfosson这三个选项都为我提供服务器名称,而不是访问页面的客户端计算机。这就是它的工作原理吗?还是我做错了什么。我想要的是客户机,而不是服务器。我正在将Web表单与asp.NET 4.0I一起使用。我刚刚测试了这个问题,发现
Dns.GetHostName()
没有提供完全限定的名称。请注意,System.Environment.MachineName只提供NetBIOS名称,因此如果主机名超过15个字符,如果需要完整名称,您将遇到问题。我不能代表其他人说话。重复问题@Malachi,那个问题是关于Windows服务的。@Sam Windows服务只是一个在后台运行的Windows应用程序,所以实际上是一样的。@Malachi,是的,我知道你的意思。然而,我认为在这个问题的答案中提到的特定于ASP.NET和特定于Winforms的方法可能不适用于这个问题。@Malachi,我想你误解了我关于ASP.NET的意思。我不是指ASP.NET应用程序获取其客户端的计算机名,尽管这样做(对于DNS名称)可能很容易,因为应用程序将获取客户端的IP地址。我指的是ASP.NET应用程序获取其主机名。有关示例,请参见此处的最高评分答案。DNS名称和computername可能不同。他在问计算机名!在F#开放式系统中轻松操作
让system_name=system.Environment.MachineName
但为什么不使用system.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().HostName?当主机名超过15个字符时,此方法将返回不同的名称!博客链接没有提供关于这个答案中提到的API的更多信息。所以我认为不应该在这里加上。
string MachineName2 = System.Net.Dns.GetHostName();
string MachineName3 = Request.ServerVariables["REMOTE_HOST"].ToString();
string MachineName4 = System.Environment.GetEnvironmentVariable("COMPUTERNAME");
Environment.MachineName;