Frage

Ich habe ein Installationsprogramm geschrieben, das einen Windows-Dienst (A) installiert, die Bedürfnisse zu starten / stoppen einen anderen Dienst (B). Wenn jedoch ein Start / Stopp-B versucht, ich diese Ausnahme erhalten:

System.InvalidOperationException: kann nicht geöffnet werden MyService Dienst auf Computer ''. ---> System.ComponentModel.Win32Exception: Zugriff verweigert

Das Installationsprogramm installiert den Dienst als lokaler Dienst, und es fordert Admin-Rechte über die UAC Pop-up, das ich zu gewähren.

: Ich habe auch eine app.manifest Datei auf den Dienst, der festgelegt ist zu fragen, für die Admin-Rechte hinzugefügt

Aber ich bin immer noch, dass Fehler.

Dies ist, wie ich den Dienst starten (Anhalt gleich ist, außer es Anrufe nicht, natürlich):

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();
}

Warum könnte Zugriff auf diesen Dienst verweigert werden?

War es hilfreich?

Lösung

Ein Dienst kann nicht für eine UAC fragen. Es klingt für mich, dass die UAC-Eingabeaufforderung Sie beschreiben, tatsächlich vom Installer benötigt wird, nicht der Service. Dienstleistungen normalerweise mit einem sehr privilegierten Konto liefen bereits, Localsystem standardmäßig. Stellen Sie sicher, dass Sie den Dienst so konfigurieren, ein privilegiertes Konto zu verwenden, nicht ein eingeschränktes Benutzerkonto.

Andere Tipps

Als Schnelltest, wenn Sie sich services.msc öffnen und überprüfen Sie Ihre Server auf „Ausführen als“, und Ihre Anmeldeinformationen eingeben, geht der Fehler weg? Es kann sein, dass die LocalService- keinen Zugriff hat andere Dienste zu beenden. Die Bereitstellung der UAC-Prompt Genehmigung ist nur wahrscheinlich, so dass Sie den Service an erster Stelle installieren, ist es nicht zu sagen als Administrator ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top