调用GetOwner时出现InvalidOperationException

Xol*_*lve 4 .net c# wmi wmi-query

在以下代码中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Diagnostics;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string javaProcWql = string.Format("SELECT ProcessId, Name, CommandLine FROM Win32_Process WHERE Name = '{0}' AND CommandLine LIKE '%{1}%'", "firefox.exe", "firefox");
            ManagementObjectSearcher mos = new ManagementObjectSearcher(javaProcWql);
            foreach (ManagementObject mo in mos.Get())
            {
                Console.WriteLine(mo["ProcessId"]);
                string[] userinfo = new string[2];
                mo.InvokeMethod("GetOwner", (object[])userinfo);
                Console.WriteLine("ha ha --> " + userinfo[1] + "\\" + userinfo[0]);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到InvalidOperationException了消息以及异常是

"由于对象的当前状态,操作无效"

这有什么不对?

Xol*_*lve 6

我找到了解决方案.查询应该像:

string.format( "SELECT * FROM Win32_Process WHERE Name = '{0}' AND CommandLine LIKE '%{1}%'", "firefox.exe", "firefox" )
Run Code Online (Sandbox Code Playgroud)

我的解释是猜测,因为我不是Windows或.NET编程方面的专家.在原始查询(请参阅问题)中我选择了字段,但是通过指定*我选择对象,所以我可以调用它们上的方法.