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文件夹运行?
计划任务由任务计划程序服务启动.此服务在C:\Windows\System32\svchost.exe可执行文件内运行.默认情况下,任务计划程序启动的所有应用程序都将C:\Windows\System32作为当前目录启动.
您可以在任务计划程序的"编辑操作"对话框中更改起始目录:
您可以使用环境变量.例如,%USERPROFILE%将开始目录设置为用户的配置文件目录(例如,C:\ Users\MyUsername).
您可能希望找到控制台应用程序可执行文件所在的目录,而不是更改计划任务的启动目录:
System.Reflection.Assembly.GetExecutingAssembly().Location
| 归档时间: |
|
| 查看次数: |
1223 次 |
| 最近记录: |