6

最近有人问我如何/如果可能的话,可以做到这一点。我不确定这是否可能,我已经搜索了一段时间。

基本上让我们以Windows有一个系统命令来关闭计算机为例。比方说shutdown -s -t 30 -c "Shutdown"

有没有办法编写一个程序来监听shutdown命令,然后运行shutdown -a以响应中止该命令?

简而言之,你能让它监听计算机上的某些系统命令并执行系统命令作为响应吗?

4

2 回答 2

1

你可以这样:

  1. 检查程序是否正在退出。
  2. 如果是,则取消程序退出调用并执行system("shutdown -a);
  3. 否则,做你想做的事。

好吧,可能有许多更复杂的方法可以做到这一点。我同意@VladLazarenko 的回答;像杀毒软件这样的程序一直在监听系统命令。但我想这需要对 API 有深入的了解。这只是一种简单的方法。如果您不是新手,那么您必须访问此链接,http://www.codeproject.com/Articles/2082/API-hooking-revealed(来自@RedX 的评论)。祝你好运!:)

于 2013-04-09T17:22:27.810 回答
1

这确实是可能的。但是,您的示例可能不是描述一般问题的最佳示例。Windows 中有应用程序可以监听的会话事件,关机就是其中之一。毕竟,shutdown.exe不是唯一可以要求 Windows 关闭的应用程序。

然而,一般来说,“侦听”正在执行的命令的应用程序必须与操作系统紧密集成。您可以想象,防病毒软件正是这样做的,并且做得更多,以防止执行“坏”程序。我不熟悉 Windows 技术,但可以想象挂钩执行二进制文件的 Windows 系统调用是一种方法。当然,这将需要“管理”权限,甚至可能需要编写内核模块。

于 2013-03-18T15:36:16.227 回答