使用C语言监视Windows操作系统的进程

时间:2010-03-09 04:18:39

标签: c++ c windows

我想在C或C ++中创建一个必须监视某些特定进程的应用程序。我怎样才能在C中实现它?

4 个答案:

答案 0 :(得分:2)

你说你必须要“管理一些特定的过程”。如果应用程序启动了进程,则可以从传递给CreateProcess函数的PROCESS_INFORMATION结构(字段hProcess)中提取进程句柄。如果要以某种不同的方式启动要跟踪的进程,则需要进程'ID(PID),并将其用作OpenProcess的第三个参数以获取句柄。因此,您可以使用WaitForSingleObject或WaitForMultipleObjects函数来等待进程完成。 (可选)您可以使用GetExitCodeProcess函数获取进程的退出代码。 应用程序可以通过其他方式启动新进程(例如通过_system()库函数),但我强烈建议直接在代码中使用CreateProcess,因为您可以完全控制子进程的行为(例如,您可以选择优先级,传递stdin / stdout / stderr句柄,决定启动窗口的特征......)。

建议的例子: http://msdn.microsoft.com/en-us/library/ms682512%28VS.85%29.aspx

答案 1 :(得分:1)

您在Windows中使用CreateProcess() function启动了一个过程。它将一个HANDLE返回给PROCESS_INFORMATION.hProcess中的进程。该过程将在进程终止时发出信号,以便您跟踪其生命周期。使用WaitForSingleObject()或WaitForMultipleObjects()来执行此操作。有一个可用的代码示例here...

答案 2 :(得分:0)

在你自己编写之前,你看过Process Monitor v2.8吗?

  

Process Monitor是一种先进的   显示的Windows监视工具   实时文件系统,注册表和   流程/主题活动。它结合了两个遗产的功能   Sysinternals工具,Filemon和   Regmon,并添加了一个广泛的列表   增强包括丰富和   非破坏性过滤,   综合事件属性等   会话ID和用户名,可靠   流程信息,完整线程   具有集成符号支持的堆栈   对于每个操作,同时进行   记录到文件等等。

答案 3 :(得分:0)