2016-06-23 18 views
0

私は、オンデマンドですべてのユーザーに対して特定のプロセスのすべてのインスタンスを強制終了できる単純なバックグラウンドサービスを作成します。プロセスは常に同じです(Microsoft Access)。管理者権限のないユーザーは、バックグラウンドサービスにプロセスを強制終了してから他のタスクに移行するように指示するスクリプトを実行できるという考えがあります。私はCで書かれた小さなプログラムを持っていますが、これはローカルシステムアカウントから実行されるとすべてのプロセスを終了させることができますが、要求に応じて起動できるサービスにする方法がわかりません。どんな提案も大歓迎です。また、管理者権限のないすべてのユーザーに対して、プロセスのすべてのインスタンスを強制終了する方法はありません。オンデマンドで名前でプロセスを強制終了するWindowsバックグラウンドサービス

+0

私はそれをしていませんが、[this](http://stackoverflow.com/a/18637556/5095502)はサービスと簡単にやり取りする方法のようです。 "スクリプト"を実行する代わりに、 'sc.ExecuteCommand()'をあなたのサービスに送る非常に小さな第2のプログラムを書く必要があります。 – Quantic

+0

ありがとう、私はそれを調べます! –

答えて

0

あなたは、このようなSrvStart(あなたがthis page上で見つけることができる)とWindowsのコマンドラインツールsc.exeなどのツールを使用して実行からサービスを作成することができます。 Hereは、これを行うのに役立つチュートリアルです。

サービスと「話す」ためには、プロセス間の通信メカニズムを実装して、ユーザー特権で実行されているクライアント(スクリプトなど)がサービスを依頼するようにする必要があります。これを行う方法はたくさんあります...使用できるものについてはthis pageを参照してください。

もう1つの方法は、Cの実行可能ファイルを取り除き、代わりにC#でWindows .NETサービスを作成することです。このサービスでは、ServiceBase.OnCustomCommandを上書きします。その後、Windowsコマンドラインツールsc.exeを使用して、カスタムコマンドをサービスに送信することができます。

一方、パスワードなしでユーザーアカウントから管理者特権で実行可能ファイルを実行するだけであれば、これを行うショートカットを作成する方法があります。このようなショートカットを作成する方法の詳細については、this pageを参照してください。

+0

ありがとうございます。私の実行可能ファイルは、ローカルシステムによって実行された場合にのみ動作します。そうしないと、実行可能ファイルが実行されたアカウントが所有するプロセスが終了するためです。私はあなたの他の提案を調べます! –

関連する問題