在一个.NET的Windows服务(使用C#),我该如何获取计算机名称?
这是一种可靠的方法吗?还是应该将它包装在try/catch中?
在一个.NET的Windows服务(使用C#),我该如何获取计算机名称?
这是一种可靠的方法吗?还是应该将它包装在try/catch中?
看看Environment类。里面有很多好东西,包括MachineName属性:
string CurrentMachineName = Environment.MachineName;
根据文档,这可能会生成一个 InvalidOperationException,所以您需要意识到这种可能性。不过,风险可能不足以将其包装在 try/catch 中。
我认为首先你需要确定你所说的“计算机名称”的含义。
正如其他人所说,并且在Windows上可能是“传统的”,你可以使用Environment.MachineName
属性来获取计算机的名称,实际上是机器的NetBIOS名称。另一个选择是机器的(完全合格的)DNS名称。但请注意,一台机器实际上可能有多个适配器/IP地址/等等,因此还可能有多个DNS名称。
考虑到Environment.MachineName
的潜在InvalidOperationException
的处理,我建议考虑一下如果遇到这种情况你会做什么。如果有什么你能做的,你当然应该捕获它。
例如,在我的一些代码中,我需要获取计算机名称(顺带一提,也在服务中),但我只将其用于诊断目的。如果Environment.MachineName
失败了,我只在诊断输出中使用一些"(unknown)"
字符串(并记录一次错误)。
如果结果对你的后续处理非常重要,你可能还应该捕获异常、将事件写入Windows事件日志并“停止运行”。