Comment trouver le chemin de l'application dans une application console ?
En Formulaires Windows je peux utiliser Application.StartupPath
pour trouver le chemin actuel, mais cela ne semble pas être disponible dans une application console.
Comment trouver le chemin de l'application dans une application console ?
En Formulaires Windows je peux utiliser Application.StartupPath
pour trouver le chemin actuel, mais cela ne semble pas être disponible dans une application console.
Voici une solution fiable qui fonctionne avec 32 bits y 64 bits applications.
Ajoutez ces références :
en utilisant System.Diagnostics ;
en utilisant System.Management ;
Ajoutez cette méthode à votre projet :
public static string GetProcessPath(int processId)
{
string MethodResult = "";
try
{
string Query = "SELECT ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
using (ManagementObjectSearcher mos = new ManagementObjectSearcher(Query))
{
using (ManagementObjectCollection moc = mos.Get())
{
string ExecutablePath = (from mo in moc.Cast<ManagementObject>() select mo["ExecutablePath"]).First().ToString();
MethodResult = ExecutablePath;
}
}
}
catch //(Exception ex)
{
//ex.HandleException();
}
return MethodResult;
}
Maintenant, utilisez-le comme ça :
int RootProcessId = Process.GetCurrentProcess().Id;
GetProcessPath(RootProcessId);
Notez que si vous connaissez l'identifiant du processus, cette méthode renverra le ExecutePath correspondant.
Extra, pour ceux qui sont intéressés :
Process.GetProcesses()
...vous donnera un tableau de tous les processus en cours d'exécution, et...
Process.GetCurrentProcess()
...vous donnera le processus en cours, ainsi que ses informations (Id, etc.) et les contrôles limités (Kill, etc.)*.
Il existe de nombreuses façons d'obtenir le chemin de l'exécutable, celle que nous devons utiliser dépend de nos besoins. Voici un lien qui traite des différentes méthodes.
Différentes façons d'obtenir le chemin de l'exécutable de l'application
Vous pouvez créer un nom de dossier en tant que Ressources dans le projet en utilisant Solution Explorer, puis vous pouvez coller un fichier dans les Ressources.
private void Form1_Load(object sender, EventArgs e) {
string appName = Environment.CurrentDirectory;
int l = appName.Length;
int h = appName.LastIndexOf("bin");
string ll = appName.Remove(h);
string g = ll + "Resources\\sample.txt";
System.Diagnostics.Process.Start(g);
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
7 votes
Avez-vous installé .NET Framework sur la machine cible (Client, Développement) ? Si votre réponse est vraie ; Alors, vous pouvez ajouter une référence à System.Windows.Forms.dll et utiliser Application.StartupPath ! C'est le meilleur moyen si vous voulez éviter les exceptions futures !
0 votes
AppDomain.BaseDirectory est le répertoire de l'application. Soyez conscient que l'application peut se comporter différemment dans l'environnement VS et l'environnement Win. Mais AppDomain devrait être le même que application.path mais j'espère que ce n'est pas seulement pour IIS.