Utilice la propiedad ProcessStartInfo.WorkingDirectory para configurarlo antes de iniciar el proceso. Si no se establece la propiedad, el directorio de trabajo predeterminado es% SYSTEMROOT% \ system32.
Puede determinar el valor de% SYSTEMROOT% usando:
string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");
Aquí hay un código de muestra que abre Notepad.exe con un directorio de trabajo 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);
También hay una variable de entorno que controla el directorio de trabajo actual para su proceso al que puede acceder directamente a través de la propiedad Environment.CurrentDirectory .
WorkingDirectoryser una ruta relativa y, de ser así, a qué se refiere, el archivo actual o el directorio del ejecutable actual? Tengo problemas para que mi programa encuentre el ejecutable que estoy intentando iniciar. He configurado el directorio de trabajo en el directorio del exe (relativo al archivo actual y al exe actual), pero no puedo encontrarlo.