web-dev-qa-db-ja.com

ServiceControllerを使用してWindowsサービスをリモート制御する方法は?

リモートコンピューターにインストールされているWindowsサービスを制御しようとしています。 ServiceControllerクラスを使用しています。

私はこれを持っています:

_ServiceController svc =  new ServiceController("MyWindowsService", "COMPUTER_NAME");
_

これにより、次のようにWindowsサービスのステータスを取得できます。

_string status = svc.Status.ToString();
_

しかし、(svc.Start();またはsvc.Stop();を実行して)Windowsサービスを制御できません。次の例外が発生します。

コンピューター 'COMPUTER_NAME'でServicexxxサービスを開けません

これは正常なことですが、アクセス許可と関係があると思います。しかし、どうやって?私はGoogleを調べましたが、探していたものが見つかりませんでした。しかし、私はしばしばなりすましに関連する何かを読みますが、それが何を意味するのかわかりません。

注:ローカルコンピューターとリモートコンピューターの両方でWin XP Pro。

19

問題が解決しました。

偽装とは、特定のログオン/パスワードを使用してコードを実行することです。私はこの非常に便利なプロジェクトを見つけました: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print これは私を助けましたたくさん!

9

サービスの開始と停止は非常に特権的な操作であり、通常は管理者のみが利用できます。使用するユーザーアカウントに、ターゲットマシンに対する十分な権限があることを確認してください。 serverfault.comで質問してください。

7
Hans Passant

この問題を解決するには、ドメイン/ユーザー名などのリモートコンピューター/サーバーに対する管理者権限を名前に付けます。同じ問題が発生したため、パッケージを正常に実行でき、セルフサービスへの権限を付与すると、リモートからアクセスできるようになりますサーバ

0
GOOKI