Windows — Как заставить программу C ++ слушать системные команды

Недавно меня спросили, как / если это возможно, что можно сделать это. Я не уверен, возможно ли это вообще, и я некоторое время искал это.

В основном давайте Windows например, есть системная команда для выключения компьютера. Скажем shutdown -s -t 30 -c "Shutdown"

Есть ли способ написать программу, которая будет слушать shutdown команда, а затем запустить shutdown -a в ответ на прерывание этой команды?

Короче говоря, можете ли вы заставить его прослушивать определенные системные команды на компьютере и выполнять системные команды в ответ?

6

Решение

Это действительно возможно. Однако ваш пример, вероятно, не самый лучший для описания общей проблемы. В Windows есть события сеанса, которые приложения могут прослушивать, и отключение является одним из них. И в конце концов, shutdown.exe это не единственное приложение, которое может попросить Windows завершить работу.

В целом, однако, приложения, «прослушивающие» исполняемые команды, должны тесно интегрироваться с операционной системой. Вы можете себе представить, что антивирусное программное обеспечение делает именно это и многое другое, чтобы предотвратить выполнение
«Плохие» программы. Я не знаком с технологией Windows, но думаю, что перехватить системный вызов Windows, который выполняет двоичные файлы, — это способ сделать это. Наверняка это потребует «административных» разрешений и может даже потребовать написания модуля ядра.

1

Другие решения

Вы можете пойти по этому пути:

  1. Проверьте, не выходит ли из программы.
  2. Если да, то отмените вызов программы и выполните system("shutdown -a);
  3. Остальное, делай что хочешь.

Ну, наверное, есть много более сложных способов сделать это. И я согласен с ответом @ VladLazarenko; такие программы, как антивирусы, продолжают слушать системные команды. Но я предполагаю, что для этого потребуются глубокие знания API. Это просто простой способ сделать это. Если вы не новичок, то вы должны посетить эту ссылку, http://www.codeproject.com/Articles/2082/API-hooking-revealed (из комментария @ RedX). Удачи! 🙂

1

По вопросам рекламы [email protected]