如何获得应用程序文件夹时,程序是由Windows任务调度程序启动
本文关键字:Windows 任务调度程序 启动 程序 何获得 应用程序 文件夹 | 更新日期: 2023-09-27 18:16:00
我在c#中有一个控制台应用程序,它在Windows任务调度程序的调度时间启动。应用程序需要从自己的目录中获取一些物理文件,并使用System.IO.Directory.GetCurrentDirectory()
。
正常当我自己启动控制台应用程序时,它工作得很好。但是当它被Windows任务调度程序启动时,它返回C:'Windows'System32
。
为什么这不是应用程序目录,是否有其他方法可以获得应用程序目录?
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
System.IO.Directory.GetCurrentDirectory()
将返回执行进程的当前目录,而不是本实例中的应用程序。以上内容足以获取可执行文件所在的执行目录。
GetCurrentDirectory
返回该目录,因为当调度器默认启动应用程序时。如果想知道二进制文件所在的目录,可以使用
Assembly.GetExecutingAssembly().Location
我也很想知道你是否在你的计划任务中设置了一个"Start In"目录设置,该设置也应该在启动时设置应用程序的当前目录。
这是一个旧的线程,但是对于一些人来说,在设置任务时,你可以在任务的Action中分配位置,通过设置可选的:Start in" value to your exe文件夹。
Assembly.GetExecutingAssembly().Location
参见GetCallingAssembly()
和GetEntryAssembly()
。
和确定应用程序根目录的最佳方法是什么?
你能试试这个返回什么吗?
System.IO.Path.GetDirectoryName(Application.ExecutablePath)
我使用My.Application.Info.DirectoryPath
是指向正确的目录,你想在Windows任务调度程序
AppDomain.CurrentDomain.BaseDirectory
如果您想使用相对于安装目录的文件,将获得该目录。