的MSDN documentation for ServiceController.GetServices規定,該函數將拋出一個ArgumentException
時什麼構成有效的機器名稱語法?
的計算機名參數無效語法。
如何驗證機器名稱的有效語法?它是否類似於維基百科的Restrictions on valid host names?我想,它將不得不覆蓋至少,但是Windows會對有效性進一步限制嗎?
的MSDN documentation for ServiceController.GetServices規定,該函數將拋出一個ArgumentException
時什麼構成有效的機器名稱語法?
的計算機名參數無效語法。
如何驗證機器名稱的有效語法?它是否類似於維基百科的Restrictions on valid host names?我想,它將不得不覆蓋至少,但是Windows會對有效性進一步限制嗎?
看一看這樣的:http://support.microsoft.com/kb/909264
雖然它提到的Active Directory,我相信NetBIOS名稱部分適用於所有的情況。
希望這會有所幫助。
斯里蘭卡
.Net有一個API來驗證指定的主機名是否是一個有效的DNS名稱。 http://msdn.microsoft.com/en-us/library/system.uri.checkhostname(v=vs.110).aspx這可能是一個很好的運行時檢查。使用這個,那麼你將不必爲查找非法字符或strlen限制的計算機名稱創建解析器。
這實際上並不像看起來那麼容易回答。問題在於,機器名稱通常不會被用於其他服務中的識別。因此,可以僅測試其作爲機器名稱的有效性(僅包含字母數字字符,不包含控制字符,不包含空格或擴展字符集),但根據您的解決方案,您可能需要驗證其是否也可用作有效的DNS名稱,並且也許還有其他的服務?
我建議你測試一下NetBIOS和DNS名稱的有效性,這裏有一個很好的描述http://support.microsoft.com/kb/909264規則的頁面。