J'essaie de contrôler les services Windows installés sur un ordinateur distant. J'utilise la classe ServiceController
.Comment contrôler à distance un service Windows avec 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? J'ai regardé dans Google mais je n'ai 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 exécutent tous les deux Win XP Pro.
Ceci est un trou de sécurité inutile. Si l'utilisateur de cette application doit avoir l'accès, ils doivent avoir les informations d'identification et se connecter en tant que cet utilisateur. Plus important encore, ils devraient juste avoir les autorisations attribuées à un groupe dont ils sont membres. Cela ne résout pas le problème, c'est une solution de contournement non sécurisée. Voir la réponse de Hans Passant et les commentaires associés. – majinnaibu