La lecture des Arguments de Ligne de Commande d'un Autre Processus (Win32 code C)

J'ai besoin d'être en mesure de répertorier les arguments de ligne de commande (le cas échéant) transmis à d'autres processus en cours d'exécution. J'ai le PIDs déjà des processus en cours d'exécution sur le système, donc en gros j'ai besoin de déterminer les arguments passés à traiter avec le PID XXX.

Je suis en train de travailler sur une partie essentielle d'un Module Python pour gérer les processus. Le code est écrit comme une extension Python en C et seront enveloppés par une hausse du niveau de la bibliothèque Python. Le but de ce projet est d'éviter la dépendance envers des tiers libs comme le pywin32 extensions, ou sur laide hacks comme un appel " ps " ou taskkill sur la ligne de commande, donc je suis à la recherche d'un moyen de le faire dans le code C.

J'ai Googlé ce autour et a trouvé quelques suggestions d'utilisation de CreateRemoteThread() à injecter moi-même dans les autres processus, puis exécutez GetCommandLine() mais j'espérais que quelqu'un pourrait avoir des exemples de code et/ou de meilleures suggestions.

Mise à JOUR: j'ai trouvé plein de travail le code de démonstration et une solution à l'aide de NtQueryProcessInformation sur CodeProject: http://www.codeproject.com/KB/threads/GetNtProcessInfo.aspx - Ce n'est pas idéal car il est non pris en charge "" la réforme de l'information directement à partir de la NTDLL structures, mais je vais vivre avec elle. Merci à tous pour les suggestions.

Mise à JOUR 2: j'ai réussi grâce à plus de Googler pour creuser une version C qui n'utilise pas de code C++, et est un peu plus direct, de façon concise, pointé vers ce problème. Voir http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/ pour plus de détails.

Merci!

OriginalL'auteur Jay | 2009-01-13