为什么我的控制台应用程序从System32运行?

Hex*_*xed 2 c# io scheduled-tasks console-application system32

我有一个位于桌面上的控制台应用程序.我已将其设置为计划任务,每20分钟无限期运行一次.我已经关闭了自动睡眠/休眠状态.然后我打开电脑并锁定桌面周末(2-3天).

我的控制台应用程序是在每次捕获异常时通过电子邮件发送给我的.当我退回时,检查我的收件箱收到了几封包含的错误电子邮件

访问路径'C:\ WINDOWS\system32\myLogs \'被拒绝.

似乎我的控制台应用程序是从System32不是从我的运行Desktop.

问:为什么它表现得像?


这是我创建myLog文件夹路径的字符串

var logpath = Directory.GetCurrentDirectory() + Properties.Settings.Default.LogPath;
Run Code Online (Sandbox Code Playgroud)

这将检查文件夹是否存在,如果不存在则创建新文件夹.

if (!Directory.Exists(logpath))
   Directory.CreateDirectory(logpath);
Run Code Online (Sandbox Code Playgroud)

我相信在检查/创建文件夹时触发了错误.我的应用程序应该myLog在与控制台应用程序相同的目录中创建该文件夹.

问:为什么它从System32文件夹运行?

Ser*_*rge 6

计划任务由任务计划程序服务启动.此服务在C:\Windows\System32\svchost.exe可执行文件内运行.默认情况下,任务计划程序启动的所有应用程序都将C:\Windows\System32作为当前目录启动.

您可以在任务计划程序的"编辑操作"对话框中更改起始目录:

任务计划程序:编辑操作对话框

您可以使用环境变量.例如,%USERPROFILE%将开始目录设置为用户的配置文件目录(例如,C:\ Users\MyUsername).

您可能希望找到控制台应用程序可执行文件所在的目录,而不是更改计划任务的启动目录:

System.Reflection.Assembly.GetExecutingAssembly().Location