获取本机主机名的四种方法
  • 获取本机 NetBIOS 名称
    lineLog.Computer = Environment.MachineName;
  • 获取本机 NetBIOS 名称
    string a = SystemInformation.ComputerName;
  • 获取本机主机名,前提是引用 System.Net
using System.Net;
string b = Dns.GetHostName();
string d = Dns.GetHostEntry("localhost").HostName;
  • 检索环境变量“computername”的值
    string c = Environment.GetEnvironmentVariable("computername");

这是我的计算机的名称:

查看 netbios 名字 netbios name_计算机名


先看一下它们运行的结果:

查看 netbios 名字 netbios name_计算机名_02

四种方法的区别
  • 首先是第一种和第二种方法,它们返回的值是一样的,都是本机的NetBIOS名称,可以说这两种方法是一样的。那么什么是NetBIOS名称呢?

    如果想更改NetBIOS名称,直接修改计算机名称就可以了,只不过NetBIOS名称只会取计算机名称的前15个字符。所以看上图就可以发现,NetBIOS名称只有我计算机名称的前15位。
  • 第三种方法获得的是计算机名,也可以获得计算机全名。计算机全名就是你的主机名+主DNS后缀,默认的主DNS后缀是空的,但是自己可以更改。详细情况请看上图。
  • 第四种方法获得的是本机环境变量名为“computername”的值,此值也可以自己更改,但是默认的就是你的计算机名。
主机名和NetBIOS名称的区别

那么主机名和NetBIOS名称有什么区别呢?

  • 其实它们的作用是相同的,都只是计算机的一个名称而已,都是为了标识计算机的,利用网络协议,可以将计算机名称和ip地址映射。
  • 它们的不同之处就在于:计算机名称和ip地址映射时用的协议不同。主机名和ip地址解析有两种方法:一是利用NetBIOS协议,二是通过DNS服务器。当使用NetBIOS协议时,使用的就是NetBIOS名称;如果使用DNS服务器解析,使用的就是计算机名。

因为NetBIOS占用系统资源少、传输效率高,所以多适用于小型的局域网,所以第一种和第二种方法返回的NetBIOS名称只在局域网内可见,而第三种方法返回的主机名是基于TCP/IP协议的。下面举个例子:
我们可以在“运行”里输入 \\name\sharehttp://name/share来访问共享资源,此时的name确切的说是用的那个名称呢?

\\NetBIOS名称\share
http://主机名/share

如果想看纯英的解释,请点击下面这个链接:Difference between SystemInformation.ComputerName, Environment.MachineName, and Net.Dns.GetHostName