5

我的机器名称是小写的(我在“高级系统设置”对话框的“计算机名称”选项卡中看到)但System.Environment.MachineName报告它是大写的。这是为什么?这对我来说是一个真正的问题,因为根据我的测试PrincipalPermissionAttribute对角色名称执行区分大小写的比较(我将自定义角色映射到 Windows 组,并且我的环境是非域的)。有什么建议吗?

4

3 回答 3

6

.NET 4.7.1的来源Environment.MachineName在这里:https ://referencesource.microsoft.com/#mscorlib/system/environment.cs,be0b5c103d248dce

它 p/invokesGetComputerName如下所示: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 名称。

于 2018-01-30T16:48:35.060 回答
5

改用Dns.GetHostName,它应该以正确的大小写返回它(至少它在我的计算机上是这样)。

于 2010-12-18T13:59:19.487 回答
1

根据这篇 MSDN 文章,它的大小写不敏感 http://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx

在哪种情况下,它会进行区分大小写的比较?

于 2010-12-18T13:56:34.320 回答