2016-03-29 72 views
1

我想获得与WMI的Windows服务的启动模式。 开始时一切正常。但是现在我总是得到一个'System.Management.ManagementBaseObject'的通用错误。C#WMI获取服务信息查询抛出一般错误

我的代码如下所示:

 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

MoveNext上的异常听起来可能是同步问题。 如果您锁定收藏的同步根,该怎么办:

  lock (coll.SyncRoot) 
      { 
       foreach (var service in coll) 
       { 
        //do your stuff 
       } 
      }