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