如何识别应用程序是否有意执行\运行文件?

时间:2010-08-15 22:17:16

标签: windows delphi winapi hook

当文件将由应用程序执行或运行时,我需要识别并触发事件。我知道我可以通过挂钩窗口程序来做到这一点,但我不知道Windows触发的程序或事件。 例如,当要执行的自动运行文件时,我的应用程序应该识别它,就像防病毒应用程序一样。

我不确定挂钩是否对我的目的有用,如果解决方案没有挂钩,请给我一个真正的解决方案。

1 个答案:

答案 0 :(得分:12)

尝试使用PsSetCreateProcessNotifyRoutine,此函数会在创建或删除进程时向要调用的例程列表添加驱动程序提供的回调例程,或将其从中删除。

你可以在这个用c ++编写的链接中找到一个非常好的样本

Detecting Windows NT/2K process execution

<强>更新

另一种选择是使用WMI事件,检查Win32_Process类,ExecNotificationQuery方法和SWbemEventSource.NextEvent函数。

检查在delphi 7和Windows 7中测试的此示例,您必须从Delphi IDE外部运行此应用程序或禁用EOleException异常的异常通知(检查此link),以避免{{1这是由IDE截获的。

EOleException