c# - tiempo - Cómo obtener la carpeta de la aplicación cuando el Programador de tareas de Windows inicia el programa
programador de tareas windows 8 (7)
Tengo una aplicación de consola en c # que se inicia en tiempos programados por el programador de tareas de Windows. La aplicación necesita algunos archivos físicos de su propio directorio y utiliza System.IO.Directory.GetCurrentDirectory()
para eso.
Normal cuando inicio la aplicación de consola, funciona perfectamente. Pero cuando se inicia con el Programador de tareas de Windows, devuelve C:/Windows/System32
.
¿Por qué este no es el directorio de la aplicación y hay otra manera de obtener el directorio de la aplicación?
¿Puedes probar lo que esto devuelve?
System.IO.Path.GetDirectoryName(Application.ExecutablePath)
Es un hilo viejo, pero para alguien que mira, mientras configura la tarea, puede asignar la ubicación en la Acción de la tarea, estableciendo el valor opcional: Comenzar en "a su carpeta exe. GetCurrentDirectory funcionará bien entonces.
Yo uso My.Application.Info.DirectoryPath
es apuntar al directorio correcto lo que desea dentro del programador de tareas de Windows.
AppDomain.CurrentDomain.BaseDirectory
obtendrá el directorio si desea usar archivos relativos al directorio de instalación.
GetCurrentDirectory
devuelve ese directorio porque cuando el programador inicia una aplicación de forma predeterminada. Si desea conocer el directorio en el que se encuentra su binario, puede usar
Assembly.GetExecutingAssembly().Location
También me gustaría saber si tiene un directorio de "Inicio en" establecido en su tarea programada, configuración que también debería establecer el directorio actual de la aplicación cuando se inicie.
Assembly.GetExecutingAssembly().Location
Consulte también GetCallingAssembly()
y GetEntryAssembly()
.
¿ Y cuál es la mejor manera de determinar el directorio raíz de la aplicación?
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 esta instancia. Lo anterior será suficiente para obtener el directorio de ejecución en el que se ejecuta su ejecutable.