Почему значение System.Environment.MachineName указано в верхнем регистре?

Имя моего компьютера в нижнем регистре (я вижу, что в диалоговом окне "Дополнительные параметры системы", вкладка "Имя компьютера"), но System.Environment.MachineName сообщает в верхнем регистре. Это почему? Это реальная проблема для меня, потому что из моих тестов PrincipalPermissionAttribute выполняет сравнение имен регистров с учетом регистра (я сопоставляю свои пользовательские роли с группами Windows, и моя среда не является доменной). Любой совет?

3 ответа

Решение

Вместо этого используйте Dns.GetHostName, который должен вернуть его в правильном регистре (по крайней мере, на моем компьютере).

Источник для Environment.MachineName для.NET 4.7.1 находится здесь: https://referencesource.microsoft.com/

Это п / вызывает GetComputerName как видно здесь: https://referencesource.microsoft.com/#mscorlib/microsoft/win32/win32native.cs,0c7d7f4f83d4ddd0

Вот функция GetComputerName: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724295(v=vs.85).aspx, в которой говорится:

GetComputerName извлекает только имя NetBIOS локального компьютера. Чтобы получить имя хоста DNS, имя домена DNS или полное имя DNS, вызовите функцию GetComputerNameEx.

MSDN для имен компьютеров, https://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx, заявляет:

Имена NetBIOS состоят из 15 байтов символов OEM, включая буквы, цифры, дефисы и точки. Некоторые символы являются специфическими для набора символов. Имена NetBIOS обычно представлены в наборе символов OEM. Набор символов OEM зависит от локали. Некоторые наборы символов OEM представляют определенные символы в виде двух байтов. Имена NetBIOS, как правило, представлены в верхнем регистре, где алгоритм перевода из нижнего в верхний регистр зависит от набора символов OEM.

Итак, имена NetBIOS в верхнем регистре по соглашению и System.Environment.MachineName возвращает системное имя NetBIOS.

Согласно этой статье MSDN, ее регистр не зависит от http://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx

В каком сценарии выполняется сравнение с учетом регистра?

Другие вопросы по тегам