Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用GetOwner时获取InvalidOperationException_C#_.net_Wmi_Wmi Query - Fatal编程技术网

C# 调用GetOwner时获取InvalidOperationException

C# 调用GetOwner时获取InvalidOperationException,c#,.net,wmi,wmi-query,C#,.net,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) { s

在以下代码中:

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]);
            }
        }
    }
}
我得到了InvalidOperationException

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


这里怎么了?

我找到了解决办法。查询应类似于:

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

我的解释只是猜测,因为我不是在Windows或.NET上编程的专家。在最初的查询(参见问题)中,我选择了字段,但通过指定
*
我选择了对象,这样我就可以对它们调用方法。

GetOwner方法需要处理字段

添加句柄字段以选择状态:

SELECT Handle, ProcessId, Name, CommandLine FROM Win32_Process where ...

你有InnerException吗?没有,没有InnerException。