epo*_*ter 55 .net windows hostname
从我所看到的,在MSDN文档和SO上的其他问题中,有四种方法可以获得本地机器名称.
Environment.MachineName;
System.Net.Dns.GetHostName();
System.Windows.Forms.SystemInformation.ComputerName;
System.Environment.GetEnvironmentVariable("COMPUTERNAME");
Run Code Online (Sandbox Code Playgroud)
他们的方法会返回什么不同,或者他们是否会一直返回完全相同的东西?
注意:我第一次看到这篇文章中的列表: 如何获取本地计算机名称?
Eve*_*zon 51
Environment.MachineName
并且System.Windows.Forms.SystemInformation.ComputerName
是相同的并返回计算机的NetBIOS名称.此名称限制为15个字符,仅在LAN上可见.
System.Net.Dns.GetHostName()
返回计算机的基于TCP/IP的主机名.通过向主机名添加域后缀,您可以在LAN/Internet上解析计算机的IP地址.
System.Environment.GetEnvironmentVariable("COMPUTERNAME")
返回安装期间设置的计算机名称.NetBIOS和主机名最初设置为相同的名称.
Myr*_*yra 14
Environment.MachineName
:从注册表中读取的本地计算机的NetBIOS名称
Dns.GetHostName
:获取计算机的主机名,该计算机引用具有一个或多个关联IP地址的域名.
System.Windows.Forms.SystemInformation.ComputerName
:与Environment.MachineName相同,区别在于您可以从网页和Windows应用程序中调用它.环境仅用于Windows应用程序.
Environment.GetEnvironmentVariable
method用于从当前进程中检索环境变量.有关更多信息,请查看:http:
//msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx
Gör*_*ran 11
这些方法之间存在一些重要的差异.假设您将计算机命名为" GöransLilla?? 987654321 ".然后
Environment.MachineName将返回GÖRANSLILLA?? 98.这是截断的,都是大写的.
Dns.GetHostName将返回GöransLilla?? 987654321.全长且正确的外壳,但中文多字节字符已替换为"?".瑞典'ö'虽然保留了下来.
我知道获取Windows中指定的实际名称的唯一方法是使用pinvoke.
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType, System.Text.StringBuilder lpBuffer, ref uint lpnSize);
System.Text.StringBuilder nameBuilder = new System.Text.StringBuilder(260);
uint size = 260;
bool success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsHostname, nameBuilder, ref size);
Console.WriteLine(nameBuilder.ToString());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24604 次 |
最近记录: |