webentwicklung-frage-antwort-db.com.de

Wie kann ich einen Windows-Dienst mit ServiceController fernsteuern?

Ich versuche, Windows-Dienste zu steuern, die auf einem Remotecomputer installiert sind. Ich benutze die Klasse ServiceController.

Ich habe das:

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

Damit kann ich den Status des Windows-Dienstes folgendermaßen abrufen:

string status = svc.Status.ToString();

Ich kann den Windows-Dienst jedoch nicht steuern (indem ich svc.Start(); oder svc.Stop(); ausführe). Ich erhalte die folgende Ausnahme:

Dienst "Servicexxx" kann auf Computer "COMPUTER_NAME" nicht geöffnet werden

Das ist normal, ich nehme an, dass es etwas mit Zugriffsberechtigungen zu tun hat. Aber wie? Ich habe bei Google nachgesehen, aber nicht gefunden, wonach ich gesucht habe. Ich lese jedoch oft etwas, das mit Identitätswechsel zusammenhängt, weiß aber nicht, was das bedeutet.

NB: Auf dem lokalen Computer und auf dem Remotecomputer wird Win XP Pro ausgeführt.

18

Problem gelöst.

Identitätswechsel besteht darin, einen Code mit einer bestimmten Anmeldung/einem bestimmten Kennwort auszuführen. Ich fand dieses sehr nützliche Projekt: http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print das hat mir sehr geholfen!

8

Das Starten und Stoppen von Diensten ist eine äußerst privilegierte Operation, die normalerweise nur Administratoren zur Verfügung steht. Stellen Sie sicher, dass das von Ihnen verwendete Benutzerkonto über ausreichende Berechtigungen auf dem Zielcomputer verfügt. Weitere Fragen dazu auf Serverfault.com

7
Hans Passant

Um das Problem zu lösen, geben Sie Ihrem Namen die Administratorberechtigungen auf Remotecomputern/Servern wie Domäne/Benutzername und Sie können das Paket erfolgreich ausführen, da ich dasselbe Problem hatte und wenn ich Berechtigungen für meine Self-Services erteilte, auf die Remote zugegriffen werden konnte Server

0
GOOKI