Почему значение System.Environment.MachineName указано в верхнем регистре? - PullRequest
4 голосов
/ 18 декабря 2010

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

Ответы [ 3 ]

3 голосов
/ 18 декабря 2010

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

3 голосов
/ 30 января 2018

Источник для Environment.MachineName для .NET 4.7.1 находится здесь: https://referencesource.microsoft.com/#mscorlib/system/environment.cs,be0b5c103d248dce

Это п / вызывает 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-имя.

1 голос
/ 18 декабря 2010

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

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

...