code

SystemInformation.ComputerName, Environment.MachineName 및 Net.Dns.GetHostName의 차이점

codestyles 2021. 1. 8. 08:16
반응형

SystemInformation.ComputerName, Environment.MachineName 및 Net.Dns.GetHostName의 차이점


내가 본 것, MSDN 문서 및 SO에 대한 다른 질문에서 로컬 컴퓨터 이름을 얻는 네 가지 방법이 있습니다.

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

메소드가 반환하는 내용에 차이가 있습니까? 아니면 항상 똑같은 것을 반환합니까?

참고 :이 게시물에서 목록을 처음 보았습니다 . 로컬 컴퓨터 이름은 어떻게 얻습니까?


Environment.MachineNameSystem.Windows.Forms.SystemInformation.ComputerName동일하며 컴퓨터의 NetBIOS 이름을 반환합니다. 이 이름은 15 자로 제한되며 LAN에서만 볼 수 있습니다.

System.Net.Dns.GetHostName()컴퓨터의 TCP / IP 기반 호스트 이름을 반환합니다. 호스트 이름에 도메인 접미사를 추가하면 LAN / 인터넷에서 컴퓨터의 IP 주소를 확인할 수 있습니다.

System.Environment.GetEnvironmentVariable("COMPUTERNAME")설치 중에 설정된 컴퓨터 이름을 반환합니다. NetBIOS와 호스트 이름은 처음에 같은 이름으로 설정됩니다.


Environment.MachineName : 레지스트리에서 읽은 로컬 컴퓨터의 NetBIOS 이름

Dns.GetHostName : 하나 이상의 연결된 IP 주소가있는 도메인 이름을 참조하는 컴퓨터의 호스트 이름을 가져옵니다.

System.Windows.Forms.SystemInformation.ComputerName : Environment.MachineName과 동일하지만 웹 페이지와 Windows 응용 프로그램 모두에서 호출 할 수 있다는 점이 다릅니다 .Environment는 Windows 응용 프로그램에서만 사용됩니다.

Environment.GetEnvironmentVariable메서드는 현재 프로세스에서 환경 변수를 검색하는 데 사용됩니다. 자세한 내용은
http://msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx를 참조하십시오.


이 방법 사이에는 몇 가지 중요한 차이점이 있습니다. 컴퓨터 이름을 " GöransLilla 人物 987654321 "로 지정합니다. 그런 다음
Environment.MachineNameGÖRANSLILLA 人物 98 을 반환 합니다. 그것은 잘리고 모두 대문자입니다.
Dns.GetHostNameGöransLilla ?? 987654321 을 반환 합니다. 전체 길이와 대소 문자가 정확하지만 중국어 멀티 바이트 문자는 '?'로 대체되었습니다. 스웨덴어 'ö'는 유지됩니다.

Windows에 지정된 실제 이름을 얻는 유일한 방법은 pinvoke입니다.

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern bool GetComputerNameEx(COMPUTER_NAME_FORMAT NameType, System.Text.StringBuilder lpBuffer, ref uint lpnSize);

System.Text.StringBuilder nameBuilder = new System.Text.StringBuilder(260);
uint size = 260;
bool success = GetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsHostname, nameBuilder, ref size);
Console.WriteLine(nameBuilder.ToString());

참조 URL : https://stackoverflow.com/questions/1233217/difference-between-systeminformation-computername-environment-machinename- 및

반응형