Winapi CoCreateInstance之后的新流程?

Winapi CoCreateInstance之后的新流程?,winapi,com,Winapi,Com,我对COM编程相当陌生,所以如果这是一个愚蠢的问题,请原谅 在(成功地)使用CoCreateInstance或CoCreateInstanceEx创建COM对象并使用类context CLSCTX_LOCAL_SERVER之后,是否有办法判断此调用是否导致生成新进程?不容易;不是通过任何方式内置到COM中。您可以采用启发式方法,例如在前后运行enumprocess。与任何启发式方法一样,这并不是100%可靠的(例如,用户可能恰好在那个时候手动运行相同的可执行文件)。现在,如果你不介意我问的话,你

我对COM编程相当陌生,所以如果这是一个愚蠢的问题,请原谅


在(成功地)使用CoCreateInstance或CoCreateInstanceEx创建COM对象并使用类context CLSCTX_LOCAL_SERVER之后,是否有办法判断此调用是否导致生成新进程?

不容易;不是通过任何方式内置到COM中。您可以采用启发式方法,例如在前后运行
enumprocess
。与任何启发式方法一样,这并不是100%可靠的(例如,用户可能恰好在那个时候手动运行相同的可执行文件)。现在,如果你不介意我问的话,你为什么在乎?您希望这些信息对解决什么问题有所帮助?我之所以需要这些信息,是因为我使用api挂钩来监控流程的行为,并且我还希望监控由此产生的所有流程。(这不是恶意软件,用户知道正在发生这种情况)。我可以很容易地连接到通过CreateProcess创建的进程中,但我特别感兴趣的是监视(单独的)explorer.exe实例以及何时启动“explorer.exe/separate”发生的情况是,创建的进程调用CoCreateInstance来创建一个新的explorer进程,然后原始进程退出。我当前正在做的是:调用CoCreateInstance后,我找到进程的pid(这已经够复杂了),但该进程可能已经在运行。然后,我使用GetProcessTimes来确定进程是否在调用CoCreateInstance后启动。这类似于EnumProcesss方法,但我希望它100%可靠。我不希望我的挂接库“感染”用户不想监视的进程。当您请求进程外服务器并且CoCreateInstance()没有失败时,您可以100%保证进程已启动。你只是不知道它在哪里运行。或者它的名字可能是什么。它很可能是在离你几千英里的机器上运行的。永远不要犯需要知道的错误;不是通过任何方式内置到COM中。您可以采用启发式方法,例如在前后运行
enumprocess
。与任何启发式方法一样,这并不是100%可靠的(例如,用户可能恰好在那个时候手动运行相同的可执行文件)。现在,如果你不介意我问的话,你为什么在乎?您希望这些信息对解决什么问题有所帮助?我之所以需要这些信息,是因为我使用api挂钩来监控流程的行为,并且我还希望监控由此产生的所有流程。(这不是恶意软件,用户知道正在发生这种情况)。我可以很容易地连接到通过CreateProcess创建的进程中,但我特别感兴趣的是监视(单独的)explorer.exe实例以及何时启动“explorer.exe/separate”发生的情况是,创建的进程调用CoCreateInstance来创建一个新的explorer进程,然后原始进程退出。我当前正在做的是:调用CoCreateInstance后,我找到进程的pid(这已经够复杂了),但该进程可能已经在运行。然后,我使用GetProcessTimes来确定进程是否在调用CoCreateInstance后启动。这类似于EnumProcesss方法,但我希望它100%可靠。我不希望我的挂接库“感染”用户不想监视的进程。当您请求进程外服务器并且CoCreateInstance()没有失败时,您可以100%保证进程已启动。你只是不知道它在哪里运行。或者它的名字可能是什么。它很可能是在离你几千英里的机器上运行的。永远不要犯需要知道的错误。