簡體   English   中英

為什么我的控制台應用程序從System32運行?

[英]Why is my Console app running from System32?

我的桌面上有一個控制台應用程序。 我將其設置為“計划任務”以無限期每20分鍾運行一次。 我已經關閉了自動睡眠/休眠模式。 然后我將PC保持開機狀態,並在周末(2-3天)鎖定了桌面。

我的控制台應用程序旨在在每次遇到異常時向我發送電子郵件。 當我返回時,檢查我的收件箱收到了幾封錯誤的電子郵件,其中包含

拒絕訪問路徑“ C:\\ WINDOWS \\ system32 \\ myLogs \\”。

看來我的控制台應用程序是從System32運行的,而不是從Desktop

問:為什么表現如此?


這是我創建myLog文件夾路徑時的字符串

var logpath = Directory.GetCurrentDirectory() + Properties.Settings.Default.LogPath;

這將檢查文件夾是否存在,如果不存在,則會創建一個新文件夾。

if (!Directory.Exists(logpath))
   Directory.CreateDirectory(logpath);

我相信該錯誤是在檢查/創建文件夾時觸發的。 我的應用程序應在與控制台應用程序相同的目錄中創建myLog文件夾。

問:為什么從System32文件夾運行?

計划任務由任務計划程序服務啟動。 此服務在C:\\Windows\\System32\\svchost.exe可執行文件中運行。 默認情況下,任務計划程序啟動的所有應用程序都以C:\\Windows\\System32作為當前目錄啟動。

您可以在任務計划程序的“編輯操作”對話框中更改開始目錄:

任務計划程序:“編輯操作”對話框

您可以使用環境變量。 例如, %USERPROFILE%將開始目錄設置為用戶的配置文件目錄(例如C:\\ Users \\ MyUsername)。

您可能要查找控制台應用程序可執行文件所在的目錄,而不是更改計划任務的開始目錄:

System.Reflection.Assembly.GetExecutingAssembly().Location

控制台應用程序是“命令行”,它們是從CMD.EXE運行的,該文件通常位於C:\\ Windows \\ System32 \\

我懷疑計划任務將當前目錄設置為CMD.EXE所在的位置,然后通過指定完整文件夾來啟動您的應用程序,

(請注意,對於64位計算機,32位命令行在\\ Syswow64 \\中存在)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM