Winapi 你能检测到.exe是如何启动的吗?

Winapi 你能检测到.exe是如何启动的吗?,winapi,vb6,exe,shellexecute,Winapi,Vb6,Exe,Shellexecute,我希望能够检测给定的exe是以编程方式编写的,还是以交互方式(比如CMD.exe)输入和执行的 exe的启动方式是否表明了用于启动它的机制 上下文:Windows XP、Visual Studio 6语言。可能有一种更简单的方法,但我能想到的唯一方法是检查父进程名称,这涉及几个步骤: ,使用ID 与找到的句柄一起使用(空作为模块)获取可执行文件的名称 检查可执行文件的名称是否为cmd.exe或其他名称 请记住,在执行此检查时(或在执行此检查时),父进程可能已经消失 编辑: 如果你的程序是一个控

我希望能够检测给定的exe是以编程方式编写的,还是以交互方式(比如CMD.exe)输入和执行的

exe的启动方式是否表明了用于启动它的机制


上下文:Windows XP、Visual Studio 6语言。

可能有一种更简单的方法,但我能想到的唯一方法是检查父进程名称,这涉及几个步骤:

  • ,使用ID
  • 与找到的句柄一起使用(空作为模块)获取可执行文件的名称
  • 检查可执行文件的名称是否为cmd.exe或其他名称
  • 请记住,在执行此检查时(或在执行此检查时),父进程可能已经消失

    编辑:


    如果你的程序是一个控制台应用程序,你也可以检查它运行的控制台。如果它是从cmd运行的,它通常会使用相同的控制台。例如,您可以使用,并查看它是否为“命令提示符”。这在本地化或不同版本的Windows上可能不起作用,但如果您有有限的案例,这很容易。您还可以使用和而不是步骤1和2。

    您可以通过检查父进程来区分CMD和Explorer,但是您无法判断它是否是由于用户操作而发生的。另外,在相同的NtCreateProcess/PspCreateProcess调用中,可以通过各种方式启动流程结果,因此您也无法判断使用了哪种API。

    @Chris Pietschmann-更好的标记。谢谢