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。