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 だけです。これはそれを取得する最も簡単な方法ですか?