【问题标题】:How to check whether a windows process was launched by user or another process?如何检查Windows进程是由用户还是其他进程启动的?
【发布时间】:2018-07-26 20:52:50
【问题描述】:

我的问题与this 非常相似,但我希望得到澄清。我特别问的是Windows。那里的 cmets 中指出,我们可以检查父进程。这很好,但我想知道这在实践中有多强大。

  • 当用户启动程序时,您可以指望父进程始终保持不变(那会是什么)?
  • 相反,如果一个程序是由另一个程序启动的,是否可以以某种方式使其看起来像是用户启动的?

【问题讨论】:

  • 绝对不清楚你在问什么。 如果一个程序由另一个程序启动 - 这不是如果但总是。再次 - 用户启动程序是什么意思?并且准确地说 - Windows 不保存有关父进程的信息。 windows 存储有关从进程继承的信息。这通常相同,但并非总是如此。和主要 - 什么是真正的问题?
  • 我说的是手动启动程序 A 与启动程序 B 之间的区别,后者有时会在后台启动程序 A。我不知道这种区别有多明确,这就是我提出问题的原因。
  • 没有任何区别。你的问题没有意义
  • 我认为不可能做出这种区分。也许如果你告诉我们你最终想要完成什么,有人可能会提出其他建议。
  • 用户“从不”启动进程:用户总是与其他进程交互并让该进程启动新应用程序。通常,用户会使用 explorer.exe(支持开始菜单、桌面和任务栏的进程)或 cmd.exe(基于命令行/批处理脚本的启动)。

标签: windows winapi process operating-system pid


【解决方案1】:

没有可靠的方法来验证进程是否响应用户交互而启动。

当用户启动程序时,您可以指望父进程始终保持不变(那会是什么)?

没有。用户可以与之交互以启动进程的应用程序数量不限(Windows 文件资源管理器、Total Commander、Windows 命令提示符、ConEmu、Cygwin 等)。此外,在您检查时,父进程可能早已消失。

相反,如果一个程序是由另一个程序启动的,是否可以以某种方式让它看起来像是用户启动了它?

用户启动的进程没有固有的属性。您是否可以建立一个不存在的属性的问题是相当哲学的。

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多