2010-12-01 7 views
0

Comment trouver le chemin d'un autre exe en connaissant son nom dans .net? Est-ce que j'ajouterais un nom à la variable d'environnement du système d'exploitation? L'autre application doit-elle s'inscrire ailleurs?C# Comment enregistrer exe?

J'ai besoin de l'application A pour démarrer l'application B et y appeler des services WCF.

Merci!

+1

Vous ne pouvez pas mettre le chemin d'accès à B dans un paramètre de configuration pour l'application A? – Amy

+0

Cela fonctionnerait, y aurait-il une solution plus propre? et par nettoyeur, je veux dire quelque chose qui ne nécessiterait pas de changements à l'application A si l'emplacement de l'application B change. Merci pour le commentaire. – dnndeveloper

+0

Mettre le chemin dans le paramètre de configuration ne nécessiterait pas de modifier l'application A lorsque l'application B se déplace. Tout ce que vous avez à faire est de modifier le fichier ApplicationA.exe.config. Aucune recompilation ne serait nécessaire. –

Répondre

3

Pour répondre à votre question: vous ne pouvez pas connaître le chemin simplement en connaissant le nom. Un exe peut résider n'importe où sur le système de fichiers. Il peut y avoir plusieurs instances qui ne se connaissent pas. Les fichiers exe multiples qui sont complètement différents peuvent avoir le même nom.

Vous pouvez prendre l'une de plusieurs approches pour contourner ce, en fonction de l'exe que vous ciblez:

  • obtenir l'utilisateur pour rechercher le exe en utilisant un fichier normal de dialogue Parcourir
  • rechercher le fichier système
  • voir quelles traces l'exe cible laisse sur le système (système de fichiers, le registre, les variables d'environnement, etc.) et d'utiliser ces traces pour localiser l'exe

pour soit o Pour ces options, vous enregistrez le résultat afin de ne pas devoir l'exécuter à nouveau lorsque votre application est exécutée la prochaine fois.

La recherche du système de fichiers peut prendre un certain temps, vous n'êtes pas sûr de trouver l'exe (selon le niveau d'utilisateur de votre application) et vous pouvez obtenir des faux positifs, surtout si l'application s'appelle quelque chose comme .exe. Obtenir l'utilisateur pour localiser l'exe la première fois que vous exécutez est probablement le moyen le plus fiable de le localiser, mais alors vous devez décider quoi faire si votre application s'exécute mais que l'exe cible n'est plus à l'emplacement spécifié ou l'utilisateur a choisi le mauvais exe. Si vous avez un certain contrôle sur l'application B (c'est-à-dire votre produit), vous pouvez ajouter des informations à un emplacement connu du registre lorsque l'application B est installée, afin que l'application A puisse la localiser facilement. Vous devez toujours avoir un plan B si l'information est manquante.

0

Référencez un chemin vers un raccourci de l'exe dans le paramètre de configuration, de cette façon, si l'exe se déplace autour du raccourci sera toujours à jour. Essayez-le, créez un raccourci vers un exe, puis coupez et collez l'exe ailleurs, puis double-cliquez sur le raccourci et vous verrez qu'il pointe vers le nouvel emplacement de l'exe. .

+3

Essayez ceci avec la commande MOVE à l'invite de commande. –

+0

J'ai cette fonction de raccourci. Il garde même la trace du nom de l'hôte d'origine! – Luca

0

Vraiment, faites de l'application B un service Windows et démarrez-le en cas de besoin.

MISE À JOUR:

Une autre suggestion serait de créer un lien difficile à l'EXE du AppB:

mklink /H AppB-link.exe path_to_actual_exe 

Ou un lien symbolique dans le répertoire entier où réside App B:

mklink /D virtual_directory path_to_actual_directory 
+0

Aurait dû mentionner l'application aura également une fenêtre principale/interface utilisateur. Il aura parfois besoin d'être contrôlé sans l'interface utilisateur pour consommer certains de ses services. – dnndeveloper