4

次のコードでは:

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伴うメッセージが表示されます

「オブジェクトの現在の状態のため、操作は無効です」

ここで何が問題なのですか?

4

2 に答える 2

6

私は解決策を見つけました。クエリは次のようになります。

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

私はWindowsまたは.NETでのプログラミングの専門家ではないので、私の説明は推測です。元のクエリ(質問を参照)では、フィールドを選択していましたが、指定する*ことでオブジェクトを選択するので、それらのメソッドを呼び出すことができます。

于 2012-08-05T14:53:07.777 に答える