OVH Cloud OVH Cloud

Trouver le chemin d'un exécutable...

17 réponses
Avatar
Clément
Bonjour,

Quand je fais Démarrer->Executer -> iexplore.exe, IE se lance. Normal vous
me direz...

Pour obtenir le même comportement par programmation, on peut utiliser
ShellExecute.
Mais moi, je voudrais utiliser CreateProcess. Mais il est écrit dans la MSDN
"The function will not use the search path", et en effet, il ne trouve pas
iexplore.exe...

Comment trouver le Path de iexplore.exe, sans être obligé le chercher dans
tous les répertoires... Peut-on récupérer les "search paths" ?

S'il vous plait, ne me renvoyez pas vers Google News (sauf un lien précis,
bien sûr), car j'ai cherché en vain (j'ai bien trouvé FindExecutableImage,
etc... mais je ne crois pas que ce soit fait pour ca, ou alors j'ai rien
compris !)...

Merci d'avance, en espérant que ce n'est pas une "FAQ" (je ne sais peut-être
pas chercher ;o)

Cordialement,
Spoofix.

7 réponses

1 2
Avatar
Clément
> Je viens de regarder comment fonctionne ShellExecute et il n'y a pas de
mystère : il faut que tu regardes si l'exe existe pour chaque valeur du
Path.
Donc tu récupéres la valeur de PATH puis tu testes chaque chemin pour voir
si l'exe existe.



Oui, mais c'est là le problème : C:Program filesInternet Explorer n'est
pas dans le PATH.
Mais comment fait ShellExecute ? ;o)

Merci pour vos réponses, en tout cas !
Clément.
Avatar
Christian ASTOR
Clément a écrit :
Quand je fais Démarrer->Executer -> iexplore.exe, IE se lance. Normal v ous
me direz...
Pour obtenir le même comportement par programmation, on peut utiliser
ShellExecute.
Mais moi, je voudrais utiliser CreateProcess.



La Dlg appelle ShellExecuteEx() qui appelle au final CreateProcess()
après avoir récupéré le path ds la registry.
Avatar
Clément
"Christian ASTOR" a écrit dans le message de
news:

La Dlg appelle ShellExecuteEx() qui appelle au final CreateProcess()
après avoir récupéré le path ds la registry.



Ok merci pour l'info ;o)
Mais où le path se trouve-t-il dans la BdR ? J'aurais bien dit
HKEY_CLASSES_ROOTApplicationsiexplore.exe, mais il y a certaines appli de
cette liste qui ne fonctionnent pas (en tapant juste le nom de l'exe dans
Démarrer -> Exécuter) alors qu'elles fonctionnent si on tape le chemin
complet (indiqué dans la BdR au meme endroit).

Merci.
Clément.
Avatar
Christian ASTOR
> Mais où le path se trouve-t-il dans la BdR ?



HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Paths
(si pas trouvé avant ds le Path)
Avatar
Clément
> HKLMSOFTWAREMicrosoftWindowsCurrentVersionApp Paths
(si pas trouvé avant ds le Path)



Merci beaucoup !
Il n'existe pas de fonction de l'API pour accéder directement à ces valeurs
?
Est-ce que c'est "propre" de le faire "à la main" ?

Merci encore.
Clément.
Avatar
Christian ASTOR
Clément wrote:

Il n'existe pas de fonction de l'API pour accéder directement à ces valeurs
?
Est-ce que c'est "propre" de le faire "à la main" ?



Le Shell utilise SHGetValue() pour simplifier les Reg* APIs.
Avatar
Clément
> Le Shell utilise SHGetValue() pour simplifier les Reg* APIs.



Merci beaucoup !
Ca marche très bien (il faut un peu bidouiller dans le cas où il y a des
paramètres, mais bon...)

Clément
1 2