ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 2014
-
12 nov. 2007 à 19:20
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 2014
-
13 nov. 2007 à 21:01
Bonjour,
Un programme peut-il savoir s'il a été lancé de manière automatique via une clé du registre?
ou s'il a été lancée suite à une action "humaine" (double-clique sur l'executable ou son raccourcis...)?
ou lancée via OUVRIR AVEC?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 13 nov. 2007 à 13:10
Salut,
param ligne de commande <=> argument passé au programme (argv,
argc du main ou le lpCmdLine du WinMain ou encore la chaîne renvoyée
par GetCommandLine). Tu peux par exemple mettre un argument dans la
valeur de ta base de registre qui lance l'exe. Tu vérifies ensuite la
présence de cette argument au lancement de ton prog.
Tu peux essayer de récupérer l'ID du processus parent (Je sais pas s'il y a mieux, mais un méthode est décrite ici. Fait une recherche de InheritedFromUniquePorcessId sur cette page.).
Les processus créés par l'utilisateur ou dans la base via la base de
registre n'auront pas le même parent. Process Explorer (Gratuit) de
SysInternals montre cette arborescence, comme sur ce screenshot.
<hr size="2" width="100%" />3ème année en ecole d'ingé d'info cherche stage de 4 mois à partir du 01/04/08
ndubien
Messages postés557Date d'inscriptiondimanche 25 septembre 2005StatutMembreDernière intervention10 mai 20144 13 nov. 2007 à 21:01
Merci pour ces indications.
Comme vous le disait rt15 il faut regarder lpCmdLine du WinMain.
Pour le registre:
si vous mettez la valeur suivante:
"c:\chemin\nom_de_exe.exe" /monexe dans HKCU\Software\Microsoft\Windows\CurrentVersion\Run,
Le lpCmdLine de l'exe spécifié entre crochets aura pour valeur: "/monexe" lors du démarrage du programme (en même temps que celui de windows)