2016-03-29 70 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 
       } 
      }