如何解决如何在C#/NET中查找本地计算机的FQDN?
注意:此解决方案仅在针对.NET 2.0(及更高版本)框架时才有效。
using System;
using System.Net;
using System.Net.networkinformation;
//...
public static string GetFQDN()
{
string domainName = IPGlobalProperties.GetIPGlobalProperties().DomainName;
string hostName = Dns.GetHostName();
domainName = "." + domainName;
if(!hostName.EndsWith(domainName)) // if hostname does not already include domain name
{
hostName += domainName; // add the domain name part
}
return hostName; // return the fully qualified name
}
由于很多人都评论说“Sam的答案”更为简洁,所以我决定在答案中添加一些评论。
Dns.GetHostEntry("LocalHost").HostName
在通常情况下,当机器联网并且是域的一部分时,两种方法通常会产生相同的结果,而在其他情况下,结果将有所不同。
当计算机不属于域时,输出将不同的情况。在这种情况下,Dns.GetHostEntry("LocalHost").HostName
将返回,localhost
而上述GetFQDN()
方法将返回主机的NETBIOS名称。
当查找计算机FQDN的目的是记录信息或生成报告时,此区别很重要。大多数时候,我在日志或报告中使用此方法,随后将这些信息用于将信息映射回特定计算机。如果机器未联网,则localhost
标识符将无用,而名称会提供所需的信息。
因此,最终取决于每个用户哪种结果取决于他们需要哪种方法。但是说这个答案不够简洁是错误的,充其量只是表面现象。
请参见输出不同的示例:http ://ideone.com/q4S4I0
解决方法
如何在C#中获取本地计算机的FQDN?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。