2017-09-21 4 views
-1

J'ai vérifié sur Internet que le chemin d'un fichier exécutable était exécuté. J'ai trouvé la réponse:Obtention du chemin d'un fichier exécutable qui est exécuté au moyen de la classe de processus via C#

string executingApplicationPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 

qui renvoie le chemin de l'application C# Je suis en cours d'exécution. Je ne pouvais pas trouver un moyen de retourner le chemin d'un fichier exécutable que je suis en cours d'exécution en utilisant la classe Process:

Process.Start("runningExecutableFile.exe", "arguments"); 

C# fichier exécutable qui exécute le « runningExecutableFile.exe » est situé dans le répertoire de ce fichier. J'ai vraiment besoin de ce répertoire. Le problème est que "runningExecutableFile.exe" peut être situé dans des répertoires différents et je veux juste copier le fichier .exe de mon application C# dans ce répertoire et trouver par programme le chemin dans lequel se trouve le fichier.
S'il vous plaît aider.

+2

'processObj.MainModule.FileName' est le chemin des exécutables. –

+0

Avez-vous consulté https://stackoverflow.com/questions/25604475/getmodulefilenameex-function-returns-wrong-path-of-system-processes? – kvr

+0

Vous voulez que runningExecutableFile.exe détecte son propre chemin lorsqu'il est appelé comme vous le montrez, ou que vous voulez que le processus appelant, qui est également un exécutable géré sous votre contrôle, trouve le chemin absolu de 'runningExecutableFile.exe' à partir de rien le répertoire en cours d'exécution de l'image appelante? – dlatikay

Répondre

0

Pour atteindre ce que vous cherchez, vous pouvez utiliser la bibliothèque System.Diagnostics comme suit:

using System.Diagnostics; 

namespace YourNameSpace 
{ 
    class Program 
    { 
     public static void Main() 
     { 
      Process[] pcs = Process.GetProcessesByName("YourProcessName"); 
      string path = pcs[0].MainModule.FileName; 
     } 
    } 
} 

.GetProcessesByName (« .. ») renvoie un ensemble de processus qui contiendra votre processus souhaité. Pour obtenir le chemin souhaité, vous pouvez simplement utiliser les propriétés .MainModule.FileName.