2012-06-01 40 views
5

管理者権限を持たずにウィンドウサービスを開始および停止する方法はありますか?Windowsサービスの管理者権限なしでの起動と停止

私のアプリケーションの起動は、閉じた後に停止するのと同じ方法でサービスを開始する必要があります。 "Service Controller"を使用してこれを行うことができます

サービスを管理者権限でインストールできますが、サービスの開始と停止は管理者権限を求めるべきではありません。

誰でも私がC#を使ってこれをどのように達成できるか教えていただけますか?

+4

可能な複製http://stackoverflow.com/questions/4436558/start-stop-a-windows-service-from-a-non-administrator-user-account – Adam

+0

どのサービスを開始および停止しようとしていますか。あなたが使用しているもの –

+0

Noraml WCFサービス –

答えて

3

私は管理者以外のユーザーのサービスを開始/停止する権限を与える方法を発見しました。サービスのグループポリシーを提供して、管理者権限なしで開始/停止できるようにします。 私はこの作業を達成するための2つのアプローチを見つけました。

アプローチ1:

  1. が作成した「mmc.exeを」
  2. ポリシー情報
  3. 変更サービス許可へを格納するためのセキュリティデータベースを作成した空のセキュリティテンプレート
  4. からコンソールを作成します。私たちに許可を与えたいユーザー
  5. 新しいセキュリティ権限が適用されました(これはblogと呼ばれます)

1つの仮想マシンに2つの非管理ユーザーアカウントを作成し、管理者アカウントからアクセス許可を設定しているので、管理者以外のユーザーアカウントからサービスを開始して停止することができました。しかし、このアプローチは問題の完全な解決策ではありませんでした。そこで私はこのプロセスを自動化することを検討し始めます。その結果、アプローチが見つかりました2

アプローチ2: "Subinacl.exe"を使用してアクセス許可を与えるSubInACLは、管理者がファイル、レジストリキー、およびサービスに関するセキュリティ情報を取得できるようにするコマンドラインツールです。この情報をユーザーからユーザー、ローカルまたはグローバルグループからグループ、ドメイン間で転送します。

この例では、管理者以外の2つのユーザーアカウントを作成し、コマンドSUBINACL/SERVICE \ DomainName \ MyService/GRANT = DomainName \ USERS = TOPを実行して、ユーザーにサービスの開始/停止を許可します。

+0

理由があることを覚えておいてくださいこのアクセス許可は、デフォルトでは通常のユーザーには与えられません。ネットワーク内のセキュリティ上の脆弱性が発生している可能性があります。 – JDB

関連する問題