132 votes

Le répertoire par défaut de .NET Process.Start ?

Je lance une application Java à partir d'une application C#. .NET application console. Cela fonctionne bien dans le cas où l'application Java ne se soucie pas de savoir quel est le répertoire "par défaut", mais échoue pour une application Java qui recherche uniquement les fichiers de support dans le répertoire actuel.

Existe-t-il un paramètre de processus qui peut être défini pour spécifier le répertoire par défaut dans lequel un processus est lancé ?

208voto

Dror Helper Points 15499

Oui ! ProcessStartInfo a une propriété appelée Répertoire de travail il suffit d'utiliser :

...
using System.Diagnostics;
...

var startInfo = new ProcessStartInfo();

  startInfo.WorkingDirectory = // working directory
  // set additional properties 

Process proc = Process.Start(startInfo);

63voto

Larry Smithmier Points 1573

Utilisez le ProcessStartInfo.WorkingDirectory (répertoire de travail) pour la définir avant de lancer le processus. Si cette propriété n'est pas définie, le répertoire de travail par défaut est %SYSTEMROOT%. \system32.

Vous pouvez déterminer la valeur de %SYSTEMROOT% en utilisant :

string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");  

Voici un exemple de code qui ouvre Notepad.exe avec un répertoire de travail de %ProgramFiles% :

...
using System.Diagnostics;
...

ProcessStartInfo _processStartInfo = new ProcessStartInfo();
  _processStartInfo.WorkingDirectory = @"%ProgramFiles%";
  _processStartInfo.FileName         = @"Notepad.exe";
  _processStartInfo.Arguments        = "test.txt";
  _processStartInfo.CreateNoWindow   = true;
Process myProcess = Process.Start(_processStartInfo);

Il existe également une variable d'environnement qui contrôle le répertoire de travail actuel de votre processus et à laquelle vous pouvez accéder directement via la commande Répertoire actuel de l'environnement propriété .

11voto

Ben Hoffstein Points 44398

Utilisez la propriété ProcessStartInfo.WorkingDirectory.

Docs aquí .

7voto

Simon Johnson Points 4641

La méthode Process.Start possède une surcharge qui prend une instance de ProcessStartInfo. Cette classe a une propriété appelée "WorkingDirectory".

Définissez cette propriété sur le dossier que vous voulez utiliser et cela devrait le faire démarrer dans le bon dossier.

4voto

Joseph Daigle Points 16429

Utilisez le ProcessStartInfo et attribue une valeur à la classe WorkingDirectory propriété.

Prograide.com

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.

Powered by:

X