C#WMI获取服务信息查询会引发一般错误

时间:2016-03-29 06:24:28

标签: c# .net service wmi

我正在尝试使用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()

1 个答案:

答案 0 :(得分:0)

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

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