【问题标题】:Is it possible to find out whether a process was started by a user or by another process via CreateProcess or ShellExecute?是否可以通过 CreateProcess 或 ShellExecute 找出一个进程是由用户启动还是由另一个进程启动的?
【发布时间】:2014-01-15 11:36:01
【问题描述】:

我想知道是否有任何方法可以检查用户是否通过双击、在 cmd 中输入所需命令、通过资源管理器中的地址栏等或其他程序启动了特定进程使用 CreateProcess() 或 ShellExecute()。

我尝试检查已创建进程的父进程 ID,但未能看到用户启动进程的父 pid 之间的任何一致性。我想知道是否有任何其他方式或使用 ppids 的万无一失的方式。

【问题讨论】:

  • 是的,ParentProcessId 就是这样做的方法。例如,由 Win32_Process 上的 WMI 查询返回。您需要自己找到一致性,完全不清楚为什么您看不到任何内容。
  • 您为什么要这样做?也许对于实际的潜在问题有更好的解决方案。
  • PPID 在 Windows 中并非万无一失,因为与 nx 不同,父进程可以在子进程之前完全终止。

标签: winapi process operating-system pid


【解决方案1】:

首先,您必须确定“用户启动的进程”对您意味着什么。从 Windows 的角度来看,所有进程都是由另一个进程启动的,无论它是否是由用户以某种方式触发的。

【讨论】:

    【解决方案2】:

    我只能考虑获取属于当前登录用户的进程,否则我怀疑您是否可以区分系统上创建的进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-04
      • 2013-01-16
      • 2018-07-26
      • 2015-03-22
      • 2010-11-05
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多