在.NET Windows服务(C#)中,如何获取计算机名称?
这是一个可靠的方法,还是应该将它包装在try/catch中?
看看Environment类.那里有很多好东西,包括MachineName:
string CurrentMachineName = Environment.MachineName;
根据文档,这可能会生成InvalidOperationException,因此您需要了解这种可能性.但是,风险可能并不保证将其包装在try/catch中.
我想首先你必须通过"计算机名称"来决定你的意思.
正如其他人所说,并且可能"传统上"在Windows上,您将使用该Environment.MachineName
属性获取计算机的名称,这实际上是计算机的 NetBIOS名称.另一种选择是机器的(完全限定的)DNS名称.但是要注意,单个机器实际上可以有多个适配器/ IP地址/任何内容,因此可以有多个DNS名称.
考虑到潜在的处理InvalidOperationException
的Environment.MachineName
,我建议想什么,如果你遇到它,你会怎么做.如果你能做些什么,你当然可以抓住它.
例如,在我的一些代码中,我需要获取计算机名称(顺便提一下也在服务中),但我只将它用于诊断目的.如果Environment.MachineName
失败,我只是"(unknown)"
在诊断输出中使用一些字符串(并且还记录一次错误).
如果结果对于您的进一步处理至关重要,您也应该捕获异常,将事件写入Windows事件日志并"死".