我正在尝试使用WMI获取Windows服务的启动模式。 一开始一切都很好。但是现在我总是得到一个“System.Management.ManagementBaseObject'。
的一般错误。”我的代码如下所示:
string wmiQuery = String.Format("Select StartMode from Win32_Service where Name= '{0}'", serviceName);
try
{
ManagementObjectSearcher wmi = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection coll = wmi.Get();
foreach (var service in coll) // throws the Exception!!!!
{
}
}
catch (Exception ex)
{
}
堆栈跟踪:
System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
答案 0 :(得分:0)
MoveNext上的异常听起来可能是同步问题。 如果你锁定集合的同步根,该怎么办:
lock (coll.SyncRoot)
{
foreach (var service in coll)
{
//do your stuff
}
}