2011-07-16 15 views
5

Actualmente estoy tratando de obtener un ejecutable para iniciarse desde una carpeta específica.Definición de un directorio de trabajo para ejecutar un programa (C#)

El código que tengo a continuación se bloquea la aplicación por extraño que parezca:

Process p = new Process(); 
p.StartInfo.WorkingDirectory = "dump"; 
p.StartInfo.FileName = s; 
p.Start(); 

I depurado, y se decía que no puede encontrar el archivo para iniciar, pero el archivo/carpeta existe duda elegiré, es mi sintaxis mal?

El siguiente código funciona, pero una directroy de trabajo no está definido, por lo que no puede encontrar el ejecutable

Process.Start(@"dump\", s); 

Respuesta

9

El directorio de trabajo que defina ("dump") es relativa al directorio de trabajo actual . Es posible que desee comprobar el directorio de trabajo actual.

Usted debe ser capaz de establecer el directorio de trabajo al directorio asambleas ejecutar con este código ...

string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 
Directory.SetCurrentDirectory(exeDir); 

O, mejor aún, no utilice una ruta relativa, ajuste p.StartInfo.WorkingDirectory al camino absoluto.

+0

Correcto, tengo una carpeta de volcado en mi directroy orking actual – James

0

No se puede iniciar un archivo ejecutable desde una carpeta, si no está allí. Debe copiar su ejecutable en esta carpeta, y solo después de eso puede iniciar un Process para este ejecutable.

Cuestiones relacionadas