DirectoryInfo topDir = Directory.GetParent(System.Environment.CurrentDirectory);
是因为System.Environment.CurrentDirectory确实是获取当前目录没错,但是如果A程序调用B程序,当B程序里使用了System.Environment.CurrentDirectory获取目录。那么这个B程序里获取的这个目录就不再是B的应用程序所在目录了;而变成了A所在的目录了。
而计划任务程序启动时通过是由windows的某个进程调用的,所以System.Environment.CurrentDirectory指向了C:\Windows\System32。
解决方案:
使用System.AppDomain.CurrentDomain.BaseDirectory替换System.Environment.CurrentDirectory。
在计划任务中启动的程序A,使用System.Environment.CurrentDirectory获取到的路径是C:WindowsSystem32,而不是程序的执行目录。这是因为计划任务由系统进程调用导致的。为了解决这个问题,文章建议使用System.AppDomain.CurrentDomain.BaseDirectory来替代,它能正确返回B程序的基础目录,即使B被A调用。
1134

被折叠的 条评论
为什么被折叠?



