2011-10-25 7 views
1

サードパーティのソフトウェアから呼び出すことができるexe経由でサービスを停止する必要があるので、C#を使用して簡単な解決方法を取り上げると思いました。許可なくC#でサービスを停止する仰角

サービスを停止するためにオンラインで見つかった次のコードを使用しようとしていますが、管理者としてexeを実行しないと動作しません(理想的にはこれを取得しようとしています滑らか)

public static void StopService(string serviceName, int timeoutMilliseconds) 
    { 
     ServiceController service = new ServiceController(serviceName); 
     service.MachineName = "."; 
     try 
     { 
      TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

      service.Stop(); 
      service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); 
     } 
     catch 
     { 
      // ... 
     } 
    } 

標高を必要とする道はありますか?

+1

サービスが同じアカウントで実行されていない限り、Windowsサービスを停止することはできません。 –

+3

そのトリックは、特権とアクセス権の目的を破ることはありませんか?どのようなウイルス*はこのトリックを利用しないでしょうか? –

+0

システムをハッキングしたり、いくつかのバグを悪用したりする以外に方法はありません。=> NO! – Yahia

答えて

2

こういったことを考えてみましょう。周りに道があるとすれば、セキュリティの全体的な点は何でしょうか?

サービスが同じアカウントで実行されている場合を除き、サービスを停止することは許されません。

私がウイルスの場合、最初にすることはありますか? 「仰角を必要とする方法」を使用してウイルススキャンサービスを停止します。

1

専用の.exeファイルまたはそのサービスとの通信方法を知っているアプリケーション(名前付きパイプなど)と通信する独自​​の「Stopper-Service」をインストールできます。

あなたのすべてのapp/.exeがこのサービスを通知しているため、特定のサービスを停止/再起動する必要があります。

サービスを停止したい場合は、そのようなメッセージ機能を統合することを検討することができます。管理者権限なしで管理できるようになります。

もちろん、承認されたアプリケーションだけが制御を獲得できるように、適切なセキュリティメカニズムを実装する必要があります。

これが役に立ちます。

4

個々のサービスにアクセス制御リストがあります。特定のユーザーまたはグループに対して、特定のサービスをシャットダウン/スターティングできる権限を与えることができます。 cmdラインツール "subinacl"を使用してMicrosoftからaclを設定することができます。http://www.microsoft.com/download/en/details.aspx?id=23510 サービス構成を照会する権限を付与することなく、サービスをシャットダウンする権限を与えることができます。

関連する問題