2010-06-08 13 views
18

Ich versuche, Windows-Dienste zu steuern, die auf einem Remotecomputer installiert sind. Ich benutze die Klasse ServiceController.Wie man einen Windows Service mit ServiceController fern steuert?

Ich habe dies:

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

Damit kann ich den Status des Windows-Dienst wie diese:

string status = svc.Status.ToString(); 

Aber ich kann nicht den Windows-Dienst steuern (von svc.Start(); tun oder svc.Stop();). Ich erhalte die folgende Ausnahme:

kann nicht geöffnet werden Servicexxx Dienst auf Computer ‚COMPUTER_NAME‘

Das ist normal, ich nehme an, es etwas mit Zugriffsberechtigungen zu tun ist. Aber wie? Ich habe in Google gesucht, aber nicht gefunden, wonach ich gesucht habe. Allerdings lese ich oft etwas, das mit dem Nachahmen zusammenhängt, aber ich weiß nicht, was das bedeutet.

Hinweis: Auf den lokalen und Remote-Computern wird Win XP Pro ausgeführt.

Antwort

8

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 mir sehr geholfen hat!

+2

Dies ist eine unnötige Sicherheitslücke. Wenn der Benutzer dieser Anwendung über den Zugriff verfügt, sollte er über die Anmeldeinformationen verfügen und sich als dieser Benutzer anmelden. Wichtiger noch, sie sollten die Berechtigungen nur einer Gruppe zuweisen, der sie angehören. Dies löst das Problem nicht, es ist eine unsichere Umgehung Siehe Hans Passants Antwort und die damit verbundenen Kommentare. – majinnaibu

7

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. Stellen Sie weitere Fragen dazu auf serverfault.com

0

Um das Problem zu lösen, geben Sie Ihrem Namen die Admin-Berechtigungen auf Remote-Computer/Server wie Domain/Benutzername und Sie können das Paket erfolgreich ausführen, da ich das gleiche Problem hatte und wenn ich Berechtigungen zu meinen Self-Services gab, waren auf Remote-Server zugänglich