【发布时间】:2011-12-14 07:28:51
【问题描述】:
可能重复:
C# Process Monitor
我正在尝试编写一个 Windows 服务来检测我的一台服务器上进程的启动和关闭。如果我自己启动应用程序,而不是其他进程,我似乎可以使用 Process 对象轻松获取这些信息。这听起来像是一个很服务的写,但没有取得任何进展。
【问题讨论】:
可能重复:
C# Process Monitor
我正在尝试编写一个 Windows 服务来检测我的一台服务器上进程的启动和关闭。如果我自己启动应用程序,而不是其他进程,我似乎可以使用 Process 对象轻松获取这些信息。这听起来像是一个很服务的写,但没有取得任何进展。
【问题讨论】:
最好的办法是使用 WMI。对该远程服务器进行 RPC 调用,正确进行身份验证,然后使用 WMI 进行查询以检索正在运行的进程。
【讨论】:
您可以使用OpenProcess 函数为当前正在运行的每个进程打开一个进程句柄。您只需要进程 ID。然后,您可以在您喜欢的任何等待功能中使用进程句柄;当相应的进程退出时,它们会发出信号。
检测新进程何时启动更难。如果对新进程的轮询不满意,则需要编写设备驱动程序并使用PsSetCreateProcessNotifyRoutine 函数。
【讨论】: