2010-07-09 5 views
0

J'essaie d'utiliser la méthode ServiceController.GetServices() pour obtenir la liste de tous les services. Dans une application de console, cela fonctionne, mais je reçois une liste vide si j'appelle cette méthode dans un service Windows. Cela semble un problème d'authentification, mais j'ai utilisé toutes les options de compte (système local, service local, service réseau, utilisateur [qui est un administrateur local]), pas de chance.ServiceController dans un service Windows

Y a-t-il une suggestion?

Merci

+0

Comment vérifiez-vous que la liste est vide? – Andreas

+0

essayer d'obtenir un seul service (un autre + le service actuel), et voir si cela fonctionne d'abord .. Obtenir le service actuel fonctionne bien, pas sûr d'obtenir des informations sur les autres: P –

+0

@Andreas J'utilise une socket , et j'envoie une commande sur telnet. lorsque la commande est "list", elle renvoie les noms de tous les services. Lorsque j'applique l'application console, tout va bien, mais l'application de service Windows est vide. – Feyyaz

Répondre

1

D'accord, cela doit être une question de privilège de compte utilisateur. L'énumération doit commencer en appelant la fonction native API OpenSCManager(). C'est une fonction très privilégiée, les documents SDK notent que l'accès administrateur est requis. Vous devrez configurer le service et lui donner un login admin. On dirait que vous avez déjà essayé cela. Vous vous inquiétez un peu pour l'UAC, alors posez d'autres questions à ce sujet sur serverfault.com, la maison présumée des experts en sécurité.

+0

J'ai essayé la suggestion d'Artiom, j'ai créé deux objets ServiceController par nom de service, et ils ne m'ont donné aucune erreur. Donc, le problème est d'obtenir tous les services d'un service Windows. BTW, l'utilisateur est déjà un administrateur. Merci – Feyyaz

+0

Ces services s'exécutent-ils sur une machine distante? –

+0

non ce sont des services locaux. Le problème est simplement que la méthode ServiceController.GetServices() renvoie la liste vide. Je ne comprends toujours pas le problème: /. – Feyyaz

Questions connexes