2011-09-20 119 views
1

当Windows中的服务或应用程序启动,停止以及它是否成功退出或出现错误代码时,我需要跟踪到日志。我需要跟踪哪些进程API来跟踪服务?

我知道许多服务不会记录自己的开始和停止时间,或者如果它们正确退出,所以似乎要走的路将不得不在插入到API中的钩子中,以便在服务/应用程序请求时捕获一个进程空间并放弃它。

我的问题是我需要挂钩什么功能才能完成这个功能,甚至有可能吗?我需要它在64位的Windows XP和7上运行。

+0

这应该可能是在stackoverflow而不是超级用户,因为它是一个编程问题。 –

回答

3

Windows Vista有NotifyServiceStatusChange(),但仅限于单一服务。在较早的版本中,除了轮询更改或观看事件日志外,无法进行此操作。

0

如果您正在寻找用户空间解决方案,EnumProcesses()将返回当前列表。但它不会以变化表示你,你必须不断地进行调查并根据差异采取行动。

如果您正在关注特定应用程序或应用程序集,请考虑将它们分配给作业对象,这些都允许您对流程设置限制并对其进行外部管理。我想你甚至可以将资源管理器与一个作业对象关联起来,那么用户启动的所有任务都会自动与作业对象关联。也许有东西需要研究。