c#之獲取本機主機名的四種方式總結
獲取本機主機名的四種方式
獲取本機 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;檢索環(huán)境變量“computername”的值
string c = Environment.GetEnvironmentVariable("computername");這是我的計算機的名稱:

先看一下它們運行的結果:

四種方法的區(qū)別
首先是第一種和第二種方法,它們返回的值是一樣的,都是本機的NetBIOS名稱,可以說這兩種方法是一樣的。那么什么是NetBIOS名稱呢?

如果想更改NetBIOS名稱,直接修改計算機名稱就可以了,只不過NetBIOS名稱只會取計算機名稱的前15個字符。
所以看上圖就可以發(fā)現,NetBIOS名稱只有我計算機名稱的前15位。
第三種方法獲得的是計算機名,也可以獲得計算機全名。計算機全名就是你的主機名+主DNS后綴,默認的主DNS后綴是空的,但是自己可以更改。詳細情況請看上圖。
第四種方法獲得的是本機環(huán)境變量名為“computername”的值,此值也可以自己更改,但是默認的就是你的計算機名。

主機名和NetBIOS名稱的區(qū)別
那么主機名和NetBIOS名稱有什么區(qū)別呢?
其實它們的作用是相同的,都只是計算機的一個名稱而已,都是為了標識計算機的,利用網絡協議,可以將計算機名稱和ip地址映射。
它們的不同之處就在于:計算機名稱和ip地址映射時用的協議不同。
主機名和ip地址解析有兩種方法:
- 一是利用NetBIOS協議
- 二是通過DNS服務器
當使用NetBIOS協議時,使用的就是NetBIOS名稱;如果使用DNS服務器解析,使用的就是計算機名。
因為NetBIOS占用系統(tǒng)資源少、傳輸效率高,所以多適用于小型的局域網,所以第一種和第二種方法返回的NetBIOS名稱只在局域網內可見,而第三種方法返回的主機名是基于TCP/IP協議的。
下面舉個例子:
我們可以在“運行”里輸入 \\name\share 或 http://name/share來訪問共享資源,此時的name確切的說是用的那個名稱呢?
\\NetBIOS名稱\share http://主機名/share
如果想看純英的解釋,請點擊下面這個鏈接:Difference between SystemInformation.ComputerName, Environment.MachineName, and Net.Dns.GetHostName
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C#編程報錯System.InvalidOperationException問題及解決
這篇文章主要介紹了C#編程報錯System.InvalidOperationException問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05

