我的机器名称是小写(我看到在高级系统设置对话框中,计算机名称选项卡),但System.Environment.MachineName
报告大写。这是为什么?这对我来说是一个真正的问题,因为从我的测试PrincipalPermissionAttribute
对角色名称进行区分大小写比较(我将自定义角色映射到Windows组,并且我的环境是非域)。有任何建议吗?为什么System.Environment.MachineName值是大写的?
回答
改为使用Dns.GetHostName,应该返回正确的大小写(至少它在我的电脑上)。
根据这个MSDN文章,它的情况下 - 不敏感 http://msdn.microsoft.com/en-us/library/ms724220(VS.85).aspx
在这情况下,它是做区分大小写的比较?
我刚刚重新测试它,可以确认如果我有角色为“MYBOX \ SupportPersonnel”PrincipalPermission引发异常,但在“mybox \ SupportPersonnel”的情况下,一切都按预期工作。我的环境是Windows 7 x64。 – UserControl 2010-12-18 14:09:55
Environment.MachineName
为用于.NET 4.7.1的源是在这里:https://referencesource.microsoft.com/#mscorlib/system/environment.cs,be0b5c103d248dce
它的p /调用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. 为什么CultureInfo.NativeName不是始终大写?
- 2. java中的system.environment.machinename?
- 3. #define:为什么要大写?
- 4. 为什么PHP布尔既是小写也是大写?
- 5. 为什么tf.Variable大写和tf.constant小写?
- 6. Erlang:为什么大写(=>)写成(> =)?
- 7. 为什么SQL条目写成大写?
- 8. 为什么选择屏幕参数的值转换为大写?
- 9. 为什么RAZOR输出一个大写的布尔值?
- 10. 为什么MySQL忽略查询关键字值的大小写?
- 11. 为什么大小写对象可序列化和大小写不是?
- 12. 什么Rascal实体应该是大写?
- 13. 为什么STANDARD_HASH('expr','MD5')的结果总是大写?
- 14. 为什么TableLayout的标题总是以大写字母显示?
- 15. 为什么GL_SHININESS的最大值是128.0而不是1.0
- 16. 为什么区分大小写和不区分大小写?
- 17. 为什么True/False在Python中大写?
- 18. 为什么XPathNavigator区分大小写?
- 19. 它为什么不把它大写?
- 20. 为什么不.toUpperCase()大写str [i]?
- 21. 为什么要以大块写入流?
- 22. 为什么Buffer对象有大写B?
- 23. 为什么ASCII以大写命名?
- 24. 什么是TimeSeriesChart的最大范围值
- 25. 什么是KeyEvent.VK_的最大可能值*
- 26. .tagName DOM属性为什么会返回大写值?
- 27. 为什么有些python变量是大写而其他是小写?
- 28. 为什么SQL中的查询主要是用大写字母写的?
- 29. 写一个无穷大数的公式,为什么这不是写成的?
- 30. 为什么npm是用JavaScript编写的?
谢谢,为我工作! Dns.GetHostName()可能返回一个与NETBIOS名称不同的名称(因为我使用它来构造本地Windows组名)? – UserControl 2010-12-18 14:13:11
@用户:好吧,'GetHostName'将返回DNS主机名,但我不记得那是如何与netbios名称相关的。 – 2010-12-18 14:20:15
如果任何人有兴趣(因为我是)[这里是本地方法](https://msdn.microsoft.com/en-us/library/windows/desktop/ms738527(v = vs.85).aspx)即调用来获得结果。如果您打算使用此功能,请提供一些有关此过程的详细信息。 – Will 2015-04-06 19:58:24