2011-11-29 10 views
14

Tengo una aplicación de consola en C# que comienza en horarios sincronizados por el programador de tareas de Windows. La aplicación necesita algunos archivos físicos de su propio directorio y usa System.IO.Directory.GetCurrentDirectory() para eso.Cómo obtener la carpeta de la aplicación cuando el programa se inicia con el Programador de tareas de Windows

Normal, cuando inicio la aplicación de la consola, funciona perfectamente. Pero cuando lo inicia el Programador de tareas de Windows, devuelve C:\Windows\System32.

¿Por qué este no es el directorio de la aplicación y hay otra forma de cómo puedo obtener el directorio de la aplicación?

Respuesta

23
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

System.IO.Directory.GetCurrentDirectory() devolverá el directorio actual del proceso de ejecución que no es su aplicación en este caso. Lo anterior bastará para obtener el directorio de ejecución en el que se ejecuta el ejecutable.

+0

en el segundo pensamiento es la respuesta mejor, ya que me das el directorio, y eso es lo que yo El resto me proporciona las rutas al archivo de ensamblaje. –

+0

@Erik: ¿Necesita solo el nombre del directorio o la ruta completa? – abatishchev

+0

@abatishchev: Bueno, la última línea en mi pregunta fue: "cómo puedo obtener el directorio de la aplicación", necesito la ruta completa al directorio de la aplicación. Su respuesta es buena, pero no me dio el directorio, me dio el archivo de ensamblaje. –

1

¿Se puede probar lo que esto devuelve?

System.IO.Path.GetDirectoryName(Application.ExecutablePath) 
4

GetCurrentDirectory devuelve ese directorio porque cuando el planificador inicia una aplicación de manera predeterminada. Si quieres saber el directorio que su binario está en, puede utilizar

Assembly.GetExecutingAssembly().Location 

yo también sería curioso saber si usted tiene un "Comenzar en" establece en su tarea programada - ajuste que deberá también prever el directorio actual de la aplicación cuando se inicia.

0

Yo uso My.Application.Info.DirectoryPath es señalar al directorio correcto lo que desea dentro del planificador de tareas de Windows.

0

Es un hilo viejo, pero para alguien que lo mire, al configurar la tarea, puede asignar la ubicación en la Acción de la tarea, configurando el valor opcional: Start in "en su carpeta exe. GetCurrentDirectory funcionará bien a continuación.

Cuestiones relacionadas