Windows-Server-2008-R2

2008 R2 任務計劃程序不會執行任務,但說成功完成,沒有錯誤

  • March 13, 2013

舊描述:

我有一個我自己編寫的 .NET 應用程序,我試圖將其設置為在 Windows Server 2008 R2 上作為計劃任務執行。當我自己從命令行執行應用程序時,它工作得很好。但是,當我設置任務時,它會在啟動後 1 秒內完成任務,並說它已成功完成,儘管應用程序當然沒有執行。因此,調度程序或應用程序都沒有記錄任何錯誤。如果我取出參數(“auto”),那麼它會“執行”任務,但永遠不會打開控制台來顯示菜單。

這是我迄今為止嘗試過的:

  1. 告訴任務直接執行應用程序。
  2. 告訴任務執行執行應用程序的批處理腳本。
  3. 告訴任務以 /C “applocation\appname auto” 作為參數打開 cmd.exe。
  4. 將任務的所有權更改為專門為執行任務創建的使用者帳戶(請注意,該使用者帳戶可以正常執行其他任務)。
  5. 明確賦予該使用者帳戶對所涉及目錄的完全控制權。
  6. 將涉及的目錄的所有權更改給同一使用者。
  7. 將應用程序的安全權限更改為始終以管理員身份執行。
  8. 盯著我的螢幕,沮喪地搖搖頭。

我對伺服器管理仍然很陌生,所以我可能忽略了一些東西,但如果我這樣做了,我不知道那是什麼。我在這裡發現了一個似乎相關的問題(GUI 不會為計劃任務載入),但它有點不同,因為至少這個問題實際上執行了部分任務。

更新:

經過一番探勘,我發現應用程序實際上一直在執行,但由於某些原因,我想我不知道 .NET 中的預設設置命名空間,即應用程序儲存/讀取 Web 服務的配置文件中的位置憑據會根據您是坐在那裡執行應用程序還是通過 TS 執行應用程序而有所不同。還在想辦法解決這個問題…

無論如何,這就是我現在所處的位置:每當任務調度程序嘗試執行應用程序時,應用程序就會吐出 SSL/TLS 錯誤。我有一個證書儲存在應用程序主目錄的子目錄 (E:\Appname) 中,與憑據的情況一樣,手動執行應用程序不會導致連接出現問題。我已確保 cert 及其文件夾列出了具有完全控制權的任務所有者。

我在這裡還缺少什麼嗎?

事實證明,問題在於配置文件儲存在 AppData\Local 目錄中,供使用者在更改配置設置時執行應用程序(在沒有“自動”參數)。由於我一直在登錄自己進行配置,而不是分配任務的使用者,因此沒有用於任務使用者的 user.config 文件,因此缺少可用的配置數據。對齊任務使用者和 user.config 文件的存在修復了它。

如果您嘗試調試在 SYSTEM 安全上下文中執行的失敗任務(這是計劃任務的預設設置),您應該獲取 psexec.exe 的副本並執行psexec -s cmd.exe. 這將為您提供一個互動式 cmd 會話作為 SYSTEM。您可以通過whoami從這個新的命令提示符執行來驗證這一點。

嘗試從這裡執行您的應用程序。您將能夠看到它可能正在寫入控制台的任何輸出。由於這是一個自定義應用程序,我認為您將很難找到明確的答案,因為我們不知道您的程式碼實際上在做什麼。以 SYSTEM 身份獲取互動式會話至少會告訴您這是權限問題,還是您在任務計劃程序中使用的設置問題。

引用自:https://serverfault.com/questions/473877