2016-03-29 13 views
1

WMI ile bir Windows hizmetinin başlatma modunu almaya çalışıyorum. Başlangıçta her şey iyi çalıştı. Ama şimdi her zaman 'System.Management.ManagementBaseObject' genel hatası alıyorum.C# WMI Hizmet bilgisi için sorgu alın Genel hata

Benim kod şöyle görünür:

 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) 
    { 

    } 

StackTrace:

System.Management.ManagementException.ThrowWithExtendedInfo (ManagementStatus errorCode) System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()

cevap

0

Bir MoveNext'deki istisna, bir senkronizasyon sorunu olabileceği gibi ses çıkarır. Koleksiyonun eşiğini kilitlerseniz ne olur?

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