管理者として実行されるWindowsサービスをインストールするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3755051

質問

別のサービスを開始/停止する必要があるWindowsサービス(a)をインストールするインストーラーを作成しました(b)。ただし、AがBを開始/停止しようとすると、この例外が表示されます。

System.InvalidOperationException:コンピューターでMyServiceサービスを開くことはできません」。 ---> System.comPonentModel.win32Exception:アクセスは拒否されます

インストーラーはローカルサービスとしてサービスをインストールし、UACポップアップを介して管理者の権利を要求します。また、App.manifestファイルをサービスに追加しました。これは、管理者の権利を要求するように設定されています。

それでも、私はまだそのエラーを受けています。

これが私がサービスを開始する方法です(もちろん、停止を呼び出すことを除いて、停止は同じです):

using (Mutex mutex = new Mutex(false, "MyServiceLock"))
{
    mutex.WaitOne();

    if (ServiceExists(serviceName) == true)
    {
        using (ServiceController serviceController = new ServiceController(serviceName, "."))
        {
            serviceController.Start(); // this line throws the exception
        }
    }

    mutex.ReleaseMutex();
}

なぜこのサービスへのアクセスが拒否されるのでしょうか?

役に立ちましたか?

解決

サービスはUACの標高を要求することはできません。あなたが説明するUACのプロンプトは、サービスではなく、インストーラーによって実際に要求されていると私には聞こえます。サービスは通常、非常に特権的なアカウントで実行されています。制限付きユーザーアカウントではなく、このような特権アカウントを使用するようにサービスを構成するようにしてください。

他のヒント

簡単なテストとして、開いている場合 services.msc サーバーを確認して「Asを実行」し、資格情報を入力して、エラーは消えますか? LocalServiceが他のサービスを停止するためのアクセス権がない可能性があります。 UACの迅速な許可を提供することは、最初にサービスをインストールすることができる可能性が高いため、管理者として実行するように指示することはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top