如何获得应用程序文件夹时,程序是由Windows任务调度程序启动

本文关键字:Windows 任务调度程序 启动 程序 何获得 应用程序 文件夹 | 更新日期: 2023-09-27 18:16:00

我在c#中有一个控制台应用程序,它在Windows任务调度程序的调度时间启动。应用程序需要从自己的目录中获取一些物理文件,并使用System.IO.Directory.GetCurrentDirectory()

正常当我自己启动控制台应用程序时,它工作得很好。但是当它被Windows任务调度程序启动时,它返回C:'Windows'System32

为什么这不是应用程序目录,是否有其他方法可以获得应用程序目录?

如何获得应用程序文件夹时,程序是由Windows任务调度程序启动

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如果您想使用相对于安装目录的文件,将获得该目录。

另请参见获取应用程序文件夹路径
的最佳方法