Як отримати назву локальної машини в C #?


Відповіді:


152

Вибачте :) Ці маленькі запитання - це щось на зразок індички. Я якось припускав, що до моменту, коли я опублікував, буде 4 відповіді.
annakata

Тільки примітка, у .NET Standard на Android це, здається, повертає "localhost"
apc


45

Від тексту посилання

Чотири способи отримати назву локальної мережі / машини:

string name = Environment.MachineName;
string name = System.Net.Dns.GetHostName();
string name = System.Windows.Forms.SystemInformation.ComputerName;
string name = System.Environment.GetEnvironmentVariable("COMPUTERNAME");

Більше інформації за посиланням: Різниця між SystemInformation.ComputerName, Environment.MachineName та Net.Dns.GetHostName


13
Вони повертають одне і те ж чи є різниця між ними?
epotter

19

Якщо вам потрібне повне доменне ім’я (повне доменне ім’я) локального комп’ютера, ви можете використовувати

System.Net.Dns.GetHostEntry("localhost").HostName

Інші методи повертатимуть лише локальне ім’я без будь-якої інформації про домен. Наприклад, для комп’ютера myComp.myDomain.comповернуться попередні методи myComp, тоді як GetHostEntryметод повернетьсяmyComp.myDomain.com


У налаштуваннях комп'ютера є розділ "Ім'я комп'ютера" та "Повне ім'я комп'ютера" - це єдиний спосіб, який я знайшов для отримання повного імені комп'ютера, коли всі інші просто дають ім'я комп'ютера. Дякую!
user2494584

1
хм, просто дає localhostза мене, ні FQDN.
Thufir

0

Ім'я мого комп'ютера більше 15 символів, тому я використовую hostname.exe, щоб отримати повне ім'я:

Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = "c:/windows/system32/hostname.exe";
proc.Start();
var hostName = proc.StandardOutput.ReadLine();
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.