2

当用户在 c# 中执行或终止程序时,有没有办法通知?我说的是用户可以执行的所有程序,而不仅仅是某个程序。我希望在用户执行 .exe 文件时收到通知。

我什至想不出谷歌的关键字。

任何建议,将不胜感激!

4

2 回答 2

3

我所知道的最接近的事情是使用 Hooks。

您可以使用WH_SHELL Hooks在系统创建或销毁新的、非拥有的顶级窗口时接收通知。这与一个进程不同,但在许多情况下它非常接近,并且在其他情况下可能更有用(因为它会在一个已经打开之后显示一个新的 Word 文档窗口打开,即使他们使用的是共享过程)。

您也许可以将其与 EnumProcess 结合起来检查进程列表是否已更改。这适用于跟踪 Windows 应用程序(但不适用于在现有控制台中运行的服务或基于控制台的应用程序)。

于 2009-08-15T00:49:52.003 回答
3

在 Microsoft .NET Framework 3.5 中,您可以获取Processes 列表并注册Process.Exited事件。我想有人可以实现一个轮询系统,在该系统中他们不断寻找新的进程,但这并没有真正通知你什么时候启动。

- 编辑 -

您可能会发现这篇文章很有用。如果您愿意编写内核模式驱动程序,您可以控制每个进程的开始和结束。

现在,如果你真的想变得狂野,可以加入 Microsoft Detours。这是一篇有趣的文章

于 2009-08-15T00:52:36.510 回答