【问题标题】:How to get source and destination PID for process created using WMI?如何获取使用 WMI 创建的进程的源和目标 PID?
【发布时间】:2017-02-14 17:14:17
【问题描述】:

可以使用 WMI COM 生成进程,下面是在 VBS 中生成 calc.exe 的示例。父级是 WmiPrvSE.exe,它是 WMI COM 服务器,而不是 wscript.exe。任务是挂钩下面的流程创建请求。

str = "calc.exe"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set objProcess = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
objProcess.Create str, Null, objConfig, intProcessID

可以使用查询来监控使用 WMI 创建的异步进程:

"SELECT * FROM MSFT_WmiProvider_ExecMethodAsyncEvent_Post WHERE ObjectPath=\"Win32_Process\" AND MethodName=\"Create\"";

执行上述 VBS 脚本时触发事件。但 ManagementEventWatcher 接收到仅提供有用信息的事件命令行:

void OnEventArrived(object sender, System.Management.EventArrivedEventArgs e)
{
string cmdline = e.NewEvent["InputParameters"]["ProcessStartupInformation"]["CommandLine"]
}

而且不可能知道 VBS 起源于生成的 calc.exe。 我需要源和目标 PID,即“wscript.exe sample.vbs”PID=666 创建“calc.exe”PID=667 使用 WMI。这该怎么做? 此外,是否有可能阻止在 MSFT_WmiProvider_ExecMethodAsyncEvent_Pre 事件上创建进程?

【问题讨论】:

  • 我已通过链接更新了答案,以便您可以使用更具体的属性,但不幸的是,我不确定您在寻找什么。
  • 第 1 篇文章中的查询查找使用 WMI COM 创建的进程,而不仅仅是使用 CreateProcess 创建的。父级不是请求者,而是 WmiPrvSE.exe。 VBS 中的代码添加到根帖子中。

标签: c# managementeventwatcher


【解决方案1】:

试试Process.Id 属性。

Process[] localByName = Process.GetProcessesByName("notepad");
int i = localByName.Length;
while (i > 0)
{
    // You can use the process Id to pass to other applications or to
    // reference that particular instance of the application.
    Console.WriteLine(localByName[i - 1].Id.ToString());
    i -= 1;
}

否则,如果您需要使用不同的属性进行枚举,请查看here

【讨论】:

  • 仅供参考,此代码可以简化为:foreach (var proc in Process.GetProcessesByName("notepad")) { Console.WriteLine(proc.Id); }
  • 并非每个记事本都是使用 WMI 创建的。我需要知道使用特定发布事件创建的特定事件。可以枚举 PID 并找到新创建的 PID,但这不是直接且不是 100% 安全的解决方案。
  • 然后根据不同的属性查询msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 2014-03-09
  • 2014-10-10
  • 2011-02-02
  • 1970-01-01
  • 2011-11-09
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多