什么构成有效的机器名称语法?

时间:2014-03-05 02:19:53

标签: .net validation hostname

MSDN documentation for ServiceController.GetServices规定该函数在

时会抛出ArgumentException
  

machineName参数的语法无效。

如何验证机器名称的有效语法?它与维基百科的Restrictions on valid host names类似吗?我想它至少要覆盖,但Windows是否对有效内容进行了进一步的限制?

3 个答案:

答案 0 :(得分:1)

看看这个:http://support.microsoft.com/kb/909264

虽然它提到了Active Directory,但我相信NetBIOS名称部分适用于所有场景。

希望这有帮助。

答案 1 :(得分:1)

.Net有一个API来验证指定的主机名是否是有效的DNS名称。 http://msdn.microsoft.com/en-us/library/system.uri.checkhostname(v=vs.110).aspx这可能是一次很好的运行时检查。使用此选项,您将不必为寻找非法字符或strlen限制的机器名创建解析器。

答案 2 :(得分:1)

这实际上并不像看起来那么容易回答。问题是机器名称通常不加改变地用于其他服务中的识别。因此可以只测试其有效性作为机器的名称(仅限字母数字字符,无控制字符,无空格,无扩展字符集),但根据您的解决方案,您可能需要验证它还可用作有效的DNS名称和也许还有其他一些服务?

我建议您测试NetBIOS和DNS名称的有效性,这是一个很好的页面,描述了http://support.microsoft.com/kb/909264的规则。