为什么我的控制台应用 运行 来自 System32?
Why is my Console app running from System32?
我的桌面上有一个控制台应用程序。我已将其设置为无限期每 20 分钟 运行 的计划任务。我已经关闭了自动 sleep/hibernate。然后我让我的电脑开着,并在周末(2-3 天)锁定我的桌面。
我开发的控制台应用程序每次捕获异常时都会给我发送电子邮件。当我返回时,检查我的收件箱收到了几封包含
的错误电子邮件
Access to the path 'C:\WINDOWS\system32\myLogs\' is denied.
我的控制台应用程序似乎是 运行 来自 System32
而不是来自我的 Desktop
。
问:为什么会这样?
这是我创建 myLog
文件夹路径的字符串
var logpath = Directory.GetCurrentDirectory() + Properties.Settings.Default.LogPath;
这将检查文件夹是否存在,如果不存在则创建一个新文件夹。
if (!Directory.Exists(logpath))
Directory.CreateDirectory(logpath);
我认为错误是在 checking/creating 文件夹上触发的。
我的应用程序应该在与我的控制台应用程序相同的目录中创建 myLog
文件夹。
问: 为什么 运行ning 来自 System32
文件夹?
控制台应用程序是 "command line",它们是 CMD.EXE 中的 运行,通常位于 C:\Windows\System32\
我怀疑计划任务将当前目录设置为 CMD.EXE 所在的位置,然后通过指定完整文件夹启动您的应用程序,
(注意 \Syswow64\ 中有一个用于 64 位机器的 32 位命令行)。
计划任务由 任务计划程序 服务启动。此服务在 C:\Windows\System32\svchost.exe
可执行文件中运行。默认情况下,任务计划程序启动的所有应用程序都以 C:\Windows\System32
作为当前目录启动。
您可以在任务计划程序的“编辑操作”对话框中更改开始目录:
您可以使用环境变量。例如,%USERPROFILE%
会将起始目录设置为用户的配置文件目录(例如 C:\Users\MyUsername)。
与其更改计划任务的开始目录,不如 find the the directory where the console application executable is located:
System.Reflection.Assembly.GetExecutingAssembly().Location
我的桌面上有一个控制台应用程序。我已将其设置为无限期每 20 分钟 运行 的计划任务。我已经关闭了自动 sleep/hibernate。然后我让我的电脑开着,并在周末(2-3 天)锁定我的桌面。
我开发的控制台应用程序每次捕获异常时都会给我发送电子邮件。当我返回时,检查我的收件箱收到了几封包含
的错误电子邮件Access to the path 'C:\WINDOWS\system32\myLogs\' is denied.
我的控制台应用程序似乎是 运行 来自 System32
而不是来自我的 Desktop
。
问:为什么会这样?
这是我创建 myLog
文件夹路径的字符串
var logpath = Directory.GetCurrentDirectory() + Properties.Settings.Default.LogPath;
这将检查文件夹是否存在,如果不存在则创建一个新文件夹。
if (!Directory.Exists(logpath))
Directory.CreateDirectory(logpath);
我认为错误是在 checking/creating 文件夹上触发的。
我的应用程序应该在与我的控制台应用程序相同的目录中创建 myLog
文件夹。
问: 为什么 运行ning 来自 System32
文件夹?
控制台应用程序是 "command line",它们是 CMD.EXE 中的 运行,通常位于 C:\Windows\System32\
我怀疑计划任务将当前目录设置为 CMD.EXE 所在的位置,然后通过指定完整文件夹启动您的应用程序,
(注意 \Syswow64\ 中有一个用于 64 位机器的 32 位命令行)。
计划任务由 任务计划程序 服务启动。此服务在 C:\Windows\System32\svchost.exe
可执行文件中运行。默认情况下,任务计划程序启动的所有应用程序都以 C:\Windows\System32
作为当前目录启动。
您可以在任务计划程序的“编辑操作”对话框中更改开始目录:
您可以使用环境变量。例如,%USERPROFILE%
会将起始目录设置为用户的配置文件目录(例如 C:\Users\MyUsername)。
与其更改计划任务的开始目录,不如 find the the directory where the console application executable is located:
System.Reflection.Assembly.GetExecutingAssembly().Location