Comment contrôler à distance un service Windows avec ServiceController?
-
24-10-2019 - |
Question
Je suis en train de contrôler les services Windows qui sont installés dans un ordinateur distant. J'utilise la classe ServiceController
.
J'ai ceci:
ServiceController svc = new ServiceController("MyWindowsService", "COMPUTER_NAME");
Avec cela, je peux obtenir l'état du service Windows comme ceci:
string status = svc.Status.ToString();
Mais je ne peux pas contrôler le service Windows (en faisant svc.Start();
ou svc.Stop();
).
Je reçois l'exception suivante:
Impossible d'ouvrir le service Servicexxx sur ordinateur 'COMPUTER_NAME'
C'est normal, je suppose qu'il ya quelque chose à voir avec les droits d'accès. Mais comment? Je l'ai regardé dans Google mais n'a pas trouvé ce que je cherchais. Cependant, je lis souvent quelque chose lié à l'usurpation d'identité, mais je ne sais pas ce que cela signifie.
NB:. Les ordinateurs locaux et distants sont en cours d'exécution à la fois Win XP Pro
La solution
Problème résolu.
usurpation d'identité consiste à faire passer un morceau de code en utilisant une certaine connexion / mot de passe. J'ai trouvé ce projet très utile: http://www.codeproject.com/ KB / cs / svcmgr.aspx? display = Imprimer qui m'a beaucoup aidé!
Autres conseils
Démarrage et arrêt des services est une opération privilégiée, normalement disponible uniquement aux administrateurs. Assurez-vous que le compte d'utilisateur que vous utilisez a des privilèges suffisants sur la machine cible. Poser plus de questions à ce sujet à serverfault.com
Afin de résoudre le problème, donnez votre nom les droits d'administrateur sur l'ordinateur distant / serveur comme domaine / nom d'utilisateur et vous serez en mesure d'exécuter le package depuis que j'ai eu avec succès le même problème et quand j'ai donné des autorisations à mes auto services ont été accessible sur le serveur distant