リモートコンピューターにインストールされている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。
問題が解決しました。
偽装とは、特定のログオン/パスワードを使用してコードを実行することです。私はこの非常に便利なプロジェクトを見つけました: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print これは私を助けましたたくさん!
サービスの開始と停止は非常に特権的な操作であり、通常は管理者のみが利用できます。使用するユーザーアカウントに、ターゲットマシンに対する十分な権限があることを確認してください。 serverfault.comで質問してください。
この問題を解決するには、ドメイン/ユーザー名などのリモートコンピューター/サーバーに対する管理者権限を名前に付けます。同じ問題が発生したため、パッケージを正常に実行でき、セルフサービスへの権限を付与すると、リモートからアクセスできるようになりますサーバ