繁体   English   中英

如何在Windows任务计划程序启动程序时获取应用程序文件夹

[英]How to get application folder when program is started by Windows Task Scheduler

我在c#中有一个控制台应用程序,它由Windows任务调度程序在学习时间开始。 该应用程序需要来自其自己目录的一些物理文件,并使用System.IO.Directory.GetCurrentDirectory()

正常情况下,当我自己启动控制台应用程序时,它运行正常 但是当它由Windows任务计划程序启动时,它将返回C:\\Windows\\System32

为什么这不是应用程序目录,还有另外一种方法可以获取应用程序目录吗?

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

System.IO.Directory.GetCurrentDirectory()将返回执行进程的当前目录,该目录不是此实例中的应用程序。 以上内容足以获取运行可执行文件的执行目录。

GetCurrentDirectory返回该目录,因为默认情况下调度程序启动应用程序时。 如果您想知道二进制文件所在的目录,可以使用

Assembly.GetExecutingAssembly().Location

我也很想知道您是否在计划任务中设置了“开始”目录 - 该设置还应该在应用程序启动时设置当前目录。

Assembly.GetExecutingAssembly().Location

另请参见GetCallingAssembly()GetEntryAssembly()

确定应用程序根目录的最佳方法是什么?

你能尝试一下这回归吗?

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

我使用My.Application.Info.DirectoryPath指向Windows任务调度程序中所需的正确目录。

它是一个旧线程,但对于有人看,在设置任务时,您可以通过设置可选项来分配任务操作中的位置:启动“值到您的exe文件夹.GetCurrentDirectory将正常工作。

AppDomain.CurrentDomain.BaseDirectory如果要使用相对于安装目录的文件,将获取该目录。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM