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 には、アプリケーションがリッスンできるセッション イベントがあり、シャットダウンはその 1 つです。結局のところ、shutdown.exeWindows にシャットダウンを要求できるアプリケーションは 1 つだけではありません。

ただし、一般に、実行中のコマンドを「リッスン」するアプリケーションは、オペレーティング システムと緊密に統合する必要があります。ウイルス対策ソフトウェアは、「悪い」プログラムの実行を防ぐために、まさにそれ以上のことを行うと想像できます。私は Windows テクノロジに詳しくありませんが、バイナリを実行する Windows システム コールをフックすることがその方法だと想像できます。確かに、「管理者」権限が必要になり、カーネルモジュールの作成が必要になることさえあります。

于 2013-03-18T15:36:16.227 に答える