2

System.Management.ManagementEventWatcher を使用して、開始されたプロセスのプロセス ID と実行可能パスを取得しています。

private void startWatcher_EventArrived(Object sender, EventArrivedEventArgs e)
{
    String processID = e.NewEvent.Properties["ProcessID"].Value.ToString();

    var searcher = new ManagementObjectSearcher(new WqlObjectQuery(String.Format("Select ExecutablePath from Win32_Process where ProcessID = {0}", processID)));

    ManagementObject managementObject = null;
    foreach (ManagementObject obj in searcher.Get())
    {
        managementObject = obj;
        break;
    }

    Console.WriteLine(managementObject["ExecutablePath"]);
}

この WQL クエリの使用:

Win32_ProcessStartTrace から ExecutablePath を選択します

EventArrivedEventArgs オブジェクトで既に利用可能なものを使用して、オブジェクト検索を回避しながら ExecutionPath を取得する方法はありますか?

本当に必要なのは、起動する新しいプロセスごとに ProcessID と ExecuatblePath だけです。これはそれを取得する最も簡単な方法ですか?

4

2 に答える 2

1

いいえ、あなたが得たものはそれが得るのと同じくらい良いです. 利用可能なプロパティはここにリストされています...

于 2010-01-25T19:32:54.447 に答える
0

この記事がお役に立てば幸いです。WMIを使用して.NETでのプロセスの作成、削除、および変更を監視する

于 2010-01-25T17:24:36.963 に答える