如何使C ++程序监听系统命令

时间:2013-03-18 13:21:21

标签: c++ windows listen

我最近被问到如果可能的话,可以做到这一点。我不确定它是否可能,我现在已经在搜索了一段时间。

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

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

简而言之,您是否可以让它在计算机上侦听某些系统命令并执行系统命令作为响应?

2 个答案:

答案 0 :(得分:1)

这确实是可能的。但是,您的示例可能不是描述通用问题的最佳示例。 Windows中存在应用程序可以侦听的会话事件,shutdown is one of them。毕竟,shutdown.exe并不是唯一可以要求Windows关闭的应用程序。

但是,一般情况下,正在执行命令的“侦听”应用程序必须与操作系统紧密集成。你可以想象,反病毒软件正是这样做的,而且还有更多,以防止执行 “糟糕”的节目。我不熟悉Windows技术,但可以想象挂钩执行二进制文件的Windows系统调用是这样做的。当然,这需要“管理”权限,甚至可以要求编写内核模块。

答案 1 :(得分:1)

你可以这样:

  1. 检查程序是否退出。
  2. 如果是,则取消程序退出调用并执行system("shutdown -a);
  3. 否则,做你想做的事。
  4. 好吧,可能还有更复杂的方法可以做到这一点。我同意@ VladLazarenko的回答;像antiviruses这样的程序会继续监听系统命令。但我想这需要深入了解API。这只是一种简单的方法。如果您不是新手,那么您必须访问此链接http://www.codeproject.com/Articles/2082/API-hooking-revealed(来自@ RedX的评论)。祝好运! :)