2009-08-13 8 views
2

Comment puis-je surveiller un processus Windows et le démarrer s'il n'est pas en cours d'exécution? J'aimerais avoir quelque chose qui démarre en tant que service Windows et qui peut gérer plusieurs processus.Surveillance d'un processus dans Windows

EDIT: Si tout va bien, il y a un prêt à utiliser la bibliothèque/composants que je peux utiliser et juste modifier ou configurer au lieu d'avoir à mettre en œuvre à partir de zéro. Je sais dans le monde * nix de deux paquets populaires: dieu et monit.

Répondre

4

Vous pouvez créer un service Windows qui surveille simplement la liste de processus en cours.

EnumProcesses fournit les moyens de voir les processus en cours d'exécution. Il existe de nombreuses API disponibles pour commencer un nouveau processus, y compris:

    système
  • ()
  • _exec()
  • WinExec()
  • ShellExecute()/ShellExecuteEx()
  • CreateProcess()
  • CreateProcessAsUser()
  • CreateProcessWithLogonW()

Si vous utilisez d'autres langages/frameworks, ils fournissent souvent leurs propres wrappers autour de ce qui précède.

+0

Connaissez-vous quelque chose qui le fait déjà (au lieu de devoir réinventer la roue)? –

+0

Non. Cependant, il est assez simple de le faire dans les langages .NET - vous pouvez faire un service qui le fait avec probablement moins de 50 lignes de code. (La plupart des fonctions ci-dessus ont des wrappers de haut niveau dans l'espace de noms System.Diagnostics, comme la classe Process, ce qui rend cette opération triviale.) –