【问题标题】:C# WMI Get query for service info throws generic errorC# WMI 获取服务信息查询引发一般错误
【发布时间】:2016-03-29 06:24:28
【问题描述】:

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

【问题讨论】:

  • 你找到解决办法了吗?

标签: c# .net service wmi


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多