您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在C#/。NET中查找本地计算机的FQDN?

如何在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# 2022/1/1 18:12:31 有863人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶