2010-04-07 4 views

Répondre

1

Il y a une réponse à votre question http://www.codeproject.com/KB/threads/ParentPID.aspx

En bref, vous créez un instantané de tous les processus en cours d'exécution avec lpfCreateToolhelp32Snapshot(), itérer puis à travers pour trouver votre processus (identifié par GetCurrentProcessId()) avec lpfProcess32First()/lpfProcess32Next(). Une fois que vous avez trouvé votre propre processus, la structure que vous obtenez vous donne l'ID de processus du processus parent, celui qui a exécuté votre application. Une fois que vous obtenez parent PID, il est facile d'obtenir le nom de fichier du fichier exe et d'autres attributs avec EnumProcessModules() et GetModuleFileNameEx().

Mais vous pouvez probablement utiliser le code du lien.

1

Pourquoi avez-vous besoin de le savoir? Windows ne gère pas une hiérarchie de processus parents stricte comme Unix - il enregistre le PID du parent lors de la création d'un processus, mais lorsque ce processus disparaît, il n'est pas mis à jour (car un processus ne suit pas ses enfants ne peut pas le mettre à jour). Cela signifie qu'il est possible que le PID du processus parent pointe vers un processus qui n'existe plus. Pire encore, théoriquement, l'ID du processus peut être réutilisé, ce qui signifie que l'ID du processus parent peut pointer vers un processus totalement différent.

Questions connexes