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.MachineName
와 System.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.MachineName 은 GÖRANSLILLA 人物 98 을 반환 합니다. 그것은 잘리고 모두 대문자입니다.
Dns.GetHostName 은 Gö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());
'code' 카테고리의 다른 글
django 튜토리얼 테스트 실행 실패-polls.tests라는 모듈이 없습니다. (0) | 2021.01.09 |
---|---|
그렇다면 Windows에서 경로 슬래시 (/ 또는 \)의 올바른 방향은 무엇입니까? (0) | 2021.01.09 |
iPhone에서 CoreData 또는 SQLite를 사용하십니까? (0) | 2021.01.08 |
Java에서 텍스트 문자열을위한 좋은 64 비트 해시 함수는 무엇입니까? (0) | 2021.01.08 |
자바 스크립트 메모리 제한 (0) | 2021.01.08 |