You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中获取运行服务应用的服务器UNC/完全限定名称

在VB.NET中获取服务器的完全限定域名(FQDN)

刚好之前我也碰到过这个需求——My.Computer.Name和System.Environment.MachineName确实只能返回短的NETBIOS名称,没法满足跨网络识别的需求。下面给你两种简单可靠的实现方式:

方法一:使用System.Net.Dns类(推荐)

这是最常用的方式,通过DNS解析直接获取完整的主机名,代码简洁且跨网络场景表现稳定:

Imports System.Net

' 获取完整的完全限定域名
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim fullComputerName As String = hostEntry.HostName

' 输出结果(比如 ABCD1234.mydomain.mysubdomain.com)
Console.WriteLine(fullComputerName)

原理是:Dns.GetHostName()先拿到本地主机的短名称,再通过GetHostEntry()向DNS服务器查询该主机的完整记录,最终HostName属性就是你需要的可跨网络识别的完全限定名称。

方法二:通过WMI读取系统配置

如果你的环境中DNS解析不稳定,或者希望直接从本地系统获取信息,WMI是个不错的选择,它会读取系统的DNS主机名和域信息并拼接:

Imports System.Management

Dim fullComputerName As String = String.Empty

' 查询Win32_ComputerSystem类获取相关信息
Using searcher As New ManagementObjectSearcher("SELECT DNSHostName, Domain FROM Win32_ComputerSystem")
    For Each systemObj As ManagementObject In searcher.Get()
        ' 拼接DNS主机名和域名得到FQDN
        fullComputerName = $"{systemObj("DNSHostName")}.{systemObj("Domain")}"
        Exit For
    Next
End Using

' 输出结果
If Not String.IsNullOrEmpty(fullComputerName) Then
    Console.WriteLine(fullComputerName)
End If

注意:使用WMI需要项目引用System.Management程序集,而且运行程序的账号需要有读取WMI信息的权限。

额外提示

  • 如果服务器没有加入域,或者DNS配置存在问题,以上方法可能仍然返回短名称,这时候可以做个判断:如果fullComputerName和My.Computer.Name一致,说明没有获取到完整域名,需要检查网络或系统配置。
  • 第一种方法(Dns类)在大多数网络环境下都能正常工作,是优先推荐的方案。

内容的提问来源于stack exchange,提问作者Alan O'Brien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:42:41