Path d'un executable

Signaler
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006
-
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006
-
bonjour
est-ce-qu'il ya une fonction qui retourne le path d'un executable?
a propos , je travaille avec le vb.net.
Merci d'avance!!

23 réponses

Messages postés
14816
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 août 2021
156
Bonjour

Reflexion.Assembly.GetExecutingassembly().Location 'Nom exe+path

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

salut Henry
j'ai essayé ta commande mais ça m'a rien donné.
ce ke je veux c'est d'obtenier le chemin d'un excecutable pour l'utiliser
comme parametre dans la commande shell.
merci d'avance
Messages postés
14816
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 août 2021
156
Bonjour

Une erreur ?
Rappel, je tape le code sans EDI, il peut y avoir des erreur de nom et de syntaxe.

AppPath=(new IO.FileInfo(Reflection.Assembly.GetExecutingAssembly().Location)).Directory.FullName

Sinon, MSDN, App.Path (il te donne une partie de la réponse, migration VB6 -> VB.NET).

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

salut
vous m'avez mal compris.ta commande me retourne le chemin de mon projet .
JE vais te decrire mon travail.
il consiste appeler un excecutable(un application)par exemple : je vais appeler
le wordpad .
avec la commande sell je suis capable de realiser cette operation ainsi
shell("chemin de l'executable", AppWinStyle.NormalFocus)
je veux avoir une commande qui me retourne le chemin du wordpad sans taper son chemin manuellement.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
tu t'es, dès le départ mal exprimée, ne stipulant pas qu'il s'agissait d'un exe externe
il est toujours dangereux de lancer des programmes ainsi, en se fiant simplement a leur noms....(cf chevaux de troie)

je me demande si Shell a besoin du chemin complet.....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

oui shell a besoin du chemin complet
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Tout est dans la doc ...

[...]If you do not know the path to the program, you can use the My.Computer.FileSystem.GetFiles Method to locate it. For example, you can call My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), which returns the full path of every file named testFile.txt anywhere on drive C:\. [...]

j'ai lancé VB, tapé Shell ( et ce tip est apparu....

au pire, tu peux faire un Process.Start, pas besoin là du chemin complet

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

salut
j'ai essayé avec ta commande mais ca n'as pas marché .
je travaille avec le vb.net
bye
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Process.Start("wordpad")

ne fonctionne pas ?? faut commencer à t'inquiéter....
on parle bien de Visual Basic 2005 ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Si ça marche pas pour wordpad, effectivement, faut s'inquiéter !

Shell trouve le fichier très probablement uniquement si son répertoire est dans la variable d'environement path, dans le dossier courant, dans le dossier de l'exe... Mais s'il se trouve quelque part perdu dans "Mes documents " ou autre, shell ne le trouvera jamais.

Pour GetFiles, c'est très sympa, mais si le dur fait 160 Go, tu peux revenir dans une heure pour voire si la commande a trouvé le fichier...

Si tu est l'auteur de l'autre exe, tu devrais pouvoir mettre son chemin d'accès dans la base de registre à l'installation.

Si tu n'est pas l'auteur, tu peux chercher d'éventuelles traces de son chemin dans la base de registre. (Commande "executer", taper "regedt32", puis rechercher). Tu pourrais récupérer ses traces par la suite avec du code.

Renfield -> Pour l'appel par nom je te suis pas... Comment faire ? Vérifier la taille ? La version ? Cela peut être presque aussi facilement copier que le nom...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
GetFiles est indiqué par la doc.... faut avouer.... un peux extrème, quand même ^^


j'ai pas compris ta question rt15 ....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Je cite ton premier message :

il est toujours dangereux de lancer des programmes ainsi, en se fiant simplement a leur noms....(cf chevaux de troie)

Je vois pas comment s'assurer qu'un exe est bien le bon. En fait si maintenant que je l'écrit. En vérifiant deux trois octets, pour limiter les risques. Mais j'était curieux de connaitre le fond de ta pensé. Je me vois pas vérifier notepad...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
je déconseille juste de lancer, dans un programme, directement   Shell("Notepad")


derrière, ca parcoure le rep de l'appli, pluis les dossiers des variables d'environnement....

qui empeche un virus/cheval de troie d'être mis dans ce repertoire, ou
dans un des repertoire du %PATH% et d'être executé a la place du
celebre editeur de texte ?


en lancant C:\Windows\Notepad.exe (attention, je ne dit absolument pas de mettre le chemin en dur ^^)

on est deja plus sur.... (rien n'emepche Notepad.exe d'avoir été remplacé...)


je prefere bien souvent lancer l'editeur de texte choisi par le user....

(en faisant, par exemple un ShellExecute sur le fichier texte, directement, sans préciser de programme)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
C'est bien vu ça. je vais m'en souvenir.
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

je travaille avec le .net
!!!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
oui.... on en doute nullement


Process.Start est du .Net également (2005)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Tu peux nous donner le chemin de l'exe que tu essais de lancer lorsque la commande ne marche pas ?
Messages postés
28
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
2 juin 2006

Salut
le chemin est :
Shell("C:\Program Files\Ethereal\ethereal.exe", AppWinStyle.NormalFocus)
Merci
!!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
et bien c'est chouette, tu as le chemin complet ^^
si le fichier pointé existe, et que tu y a accès, il n'y a aucune raison que tu ne puisse le lancer...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Si tu souhaite distribuer une appli ayant la capacité de lancer cet
executable (Un sniffer en l'occurence), tu peux déjà te ruer sur la
variable d'environement ProgramFiles, qui renvoie par exemple  C:\Program Files.


Ensuite, tu complète avec \Ethereal\ethereal.exe et tu le balance sur ta commande.


Program Files étant l'emplacement le plus logique, ça devrait marcher pour pour bon nombre d'utilisateurs.


Si ça marche pas, tu peux lancer les commandes de recherche situées
plus haut, ou demander à l'utilisateur le chemin du fichier (S'il
utilise un sniffer, il devrait savoir ou il l'a mis...)


Si tu veux travailler plus finement, comme je l'ai dit plus haut, tu
dois regarder si cette appli met son chemin d'une manière ou d'une
autre dans la base de registre.


Fait une recherche de \ethereal par
exemple. Il y a pas mal d'appli qui mette le chemin d'accès d'un
fichier de désinstallation du programme qui est appelé lorsque l'on
clique sur supprimer dans ajout/suppression de programme.
(Attention, ce n'est pas parcequ'il est dans cette liste que le chemin
d'un fichier de désinstallation est dans la base de regsitre).