Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET中获取计算机名_C#_.net - Fatal编程技术网

C# 如何在.NET中获取计算机名

C# 如何在.NET中获取计算机名,c#,.net,C#,.net,如何在.NET c#System.Environment.MachineName中获取计算机名 或者,如果您使用的是Winforms,则可以使用System.Windows.Forms.SystemInformation.ComputerName,它返回的值与System.Environment.MachineName的值完全相同。您可以使用访问机器名。 从控制台或WinForms应用程序 从web应用程序 获取FQDN的步骤 查看最后一个是否没有提供FQDN,您是否需要它 请参阅有关的详细信

如何在.NET c#

System.Environment.MachineName中获取计算机名


或者,如果您使用的是Winforms,则可以使用
System.Windows.Forms.SystemInformation.ComputerName
,它返回的值与
System.Environment.MachineName
的值完全相同。

您可以使用访问机器名。

  • 从控制台或WinForms应用程序
  • 从web应用程序
  • 获取FQDN的步骤
查看最后一个是否没有提供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;