2009-08-17 4 views
0

Je cours un programme de service qui est démarré plusieurs fois avec différents fichiers de configuration transmis sur la ligne de commande. Le programme est démarré par un programme de contrôle qui s'exécute en tant que service Windows. Ce service devrait être capable de surveiller et de redémarrer les programmes. Au moment où j'ai le problème si le programme de contrôle se bloque, je ne peux pas démarrer toutes les instances du programme de service, parce que je ne peux pas détecter quelle instance est en cours d'exécution et qui ne fonctionne pas.Démarrer un processus multiple dans le code et les distinguer à leurs arguments de ligne de commande

J'ai essayé d'utiliser l'API System.Diagnostics.Process et également l'API WMI pour obtenir des informations. Mais dans les deux variantes, les arguments de la ligne de commande ne sont PAS disponibles.

Pour démarrer une instance, j'utilise l'objet StartInfo du System.Diagnostics.Process. J'ai lu quelque part à stackoverflow que les informations de processus dans l'objet StartInfo ne sont pas disponibles pour un autre processus, mais elles devraient être disponibles par l'API WMI - mais pas dans mon cas ..

Dois-je commencer les instances d'une autre manière? ou existe un autre moyen d'accéder aux arguments de ligne de commande d'un processus en cours

+0

Ces autres programmes sont-ils sous votre contrôle? Parce qu'il n'y a aucune garantie dans Windows que la ligne de commande avec laquelle vous démarrez un processus survivra au démarrage de ce programme (donc ne serait pas disponible) –

+0

J'utilise généralement WMI pour gérer les processus et sa ligne de commande. – lsalamon

+0

@Damien - oui c'était peut-être problème principal .. mais à 99% la ligne de commande est lisible aux requêtes WMI. – mabu

Répondre

0

J'ai modifié cette configuration pour utiliser l'espace de noms System.Management. Maintenant, les processus sont répertoriés détectés. Mais je dois traiter toute la ligne de commande en utilisant des expressions régulières .. c'est la seule "mauvaise" chose à ce sujet

Questions connexes