Winapi 是否可以通过CreateProcess或ShellExecute查明某个进程是由用户启动的,还是由另一个进程启动的?

Winapi 是否可以通过CreateProcess或ShellExecute查明某个进程是由用户启动的,还是由另一个进程启动的?,winapi,process,operating-system,pid,Winapi,Process,Operating System,Pid,我想知道是否有任何方法可以检查用户是否通过双击、在cmd中键入所需命令、通过资源管理器中的地址栏等,或者通过使用CreateProcess或ShellExecute的其他程序启动了特定进程 我尝试检查所创建进程的父进程id,但在用户启动的进程的父进程PID之间看不到任何一致性。我想知道使用PPID是否还有其他方法或简单的方法。我只能考虑获取属于当前登录用户的进程,否则我怀疑您是否能够区分在系统上创建的进程。首先,您必须确定用户启动的进程对您意味着什么。从Windows的角度来看,所有进程都是由另

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


我尝试检查所创建进程的父进程id,但在用户启动的进程的父进程PID之间看不到任何一致性。我想知道使用PPID是否还有其他方法或简单的方法。

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

首先,您必须确定用户启动的进程对您意味着什么。从Windows的角度来看,所有进程都是由另一个进程启动的,不管它是否由用户触发。

是的,ParentProcessId就是这样做的方法。例如,由Win32_进程上的WMI查询返回。你需要自己找到一致性,完全不清楚为什么你没有看到一致性。你为什么要这样做?也许有更好的方法解决实际的底层问题。PPID在Windows中不是万无一失的,因为与nx不同,父进程可以在子进程之前完全终止。