10
votes

Liste des processus en cours d'exécution sur Windows 64 bits

IMM écrit un petit script Python qui prendra des informations de VMS de Windows que je suis en cours d'exécution.

Pour le moment, je peux énumérer les processus sur une machine de 32 bits XP avec la méthode suivante:

http://code.activestate.com/recipes/305279/

est-il possible de détecter en quelque sorte la version de Windows exécutant et d'excéder une méthode différente permettant d'obtenir les processus sur une machine 64 bits, j'essaie d'obtenir les processus à partir d'une fenêtre de 64 bits et de 64 bits Windows 7.

Des idées?


0 commentaires

5 Réponses :


0
votes

Vous devriez être capable de le faire en exposant Instrumentation de gestion Windows dans chaque VM. Cet outil vous donne accès à un tas de données système, y compris des processus, voir http://technet.microsoft.com/en-us/library/cc757287%28WS.10%29.aspx

Vous devriez être capable de popen une des commandes du lien précédent pour obtenir les informations que vous recherchez.


1 commentaires

Il est significativement préférable d'utiliser un outil tel que Win32Process ou des pstules que pour la sortie de tuyau d'une commande de ligne de commande. Quelque chose qui est intentionnellement intégré à Python sera toujours plus facile et plus propre à utiliser.



25
votes

Il y a une autre recette sur ActiveState qui fait une chose similaire, mais utilise la bibliothèque d'assistance de données de performance (PDH) à la place.

J'ai testé cela sur ma machine Windows 7 64 bits et que cela fonctionne là - donc probablement la même fonction Travaillera sur des fenêtres 32 bits et 64 bits.

Vous pouvez trouver la recette ici: http://code.activestate.com/recipes/303339/

Une autre méthode utilise WMI, il y a un exemple ici en Python en utilisant le WMI module:

http://timgolden.me.uk/python/wmi/cookbook.html xxx


6 commentaires

WMI travaille-t-il sur 64 bits) aussi? Je ne vois rien sur ce site qui mentionne 64 bits ou utilisez-vous les mêmes noms de méthodes?


Il devrait fonctionner de la même manière (y compris la méthode) des noms pour les deux environnements.


J'utilise cette méthode dans ma demande, mais nous remarquons des pointes importantes de la CPU lorsque cette recherche est déclenchée. Je pensais à l'origine que c'était le planificateur que j'utilise, mais j'ai commencé à commenter le code jusqu'à ce que je me rende à ce code spécifique. Commenté, pas de pointes significatives. Des pensées?


Je devrais ajouter l'approche Jonathan Rocher Publié n'a pas ce problème et bénéficie de la plate-forme agnostique.


PIP Installez WMI semble réussir et refléter la libération sur le site Web lié.


Si vous obtenez une erreur de module non trouvée similaire à "Module Win32Something non trouvé" ni similaire, installez la version de droite de Pywin32 à partir de là.



27
votes

Si vous ne voulez pas compter sur des modules supplémentaires installés, vous pouvez analyser la sortie de WMIC , EG:

c:\> wmic process get description,executablepath    
...
explorer.exe               C:\Windows\explorer.exe
cmd.exe                    C:\Windows\SysWOW64\cmd.exe
conhost.exe                C:\Windows\system32\conhost.exe
...


0 commentaires

8
votes

À des fins similaires, j'ai utilisé Psutil Bibliothèque. Quelques astuces:

  • Processus de liste avec psutil.pids () ( Référence )
  • Inspecter des informations sur le processus avec processus = psutil.process (PID) ( )
  • do processus.kill ou processus.terminate ()

    Installation sous Windows - pip fera une installation à partir de la source (qui signifie compiler), vous souhaitez donc probablement télécharger une installation binaire à partir de https : //pypi.python.org/pypi/psutil/#downloads .


1 commentaires

Psutil limite sa production de processus à l'utilisateur actuel exécutant le script Python. D'où un utilisateur non administrateur ne verra pas de processus privilégiés.



9
votes

Le moyen le plus propre que j'ai trouvé pour résoudre c'était d'utiliser le bibliothèque Psutil comme recommandé par Robert LUJO:

[p.name() for p in psutil.process_iter()]


1 commentaires

Salut, que sa belle, juste une question, comme p est un processus avec pid et nom, pourquoi obtenez-vous P.Name () avec des crochets? Et pourquoi cela ne fonctionne-t-il pas si je veux obtenir les PID? J'essaie d'obtenir le pid / nom correspondant