從任務計劃程序最小化啟動服務

從任務計劃程序最小化啟動服務

建立計劃任務後如下這個超級用戶問題,我可以在沒有UAC提示的情況下成功啟動服務。選擇的選項是:

  • Start a program
  • Program\script=C:\Windows\System32\net.exe
  • Add arguments (optional)=start "SERVICE-NAME"

然後在批次檔中我調用schtasks /run /tn TASK-NAME.測試後,我創建了批次檔的快捷方式並將選項Run設為Minimised.

這一切都有效,只是當實際服務啟動時,會彈出一個最大化的命令提示字元窗口,其中包含一行The SERVICE-NAME service is starting。幾秒鐘後該現象就會消失。

如何告訴任務計劃程序以靜默方式(或最小化)啟動目標程序而不彈出視窗?如果彈出的命令提示字元被最小化那就沒問題了。

答案1

問題是,當您將捷徑配置為最小化運行時,您只會最小化啟動計劃任務的程序,而不是任務執行的程序。您的 Rube Goldberg 機器啟動序列中需要另一塊,請進行以下變更:

  • Program\script=C:\Windows\System32\cmd.exe
  • Add arguments (optional)=/c start /min net start "SERVICE-NAME"

第一個“start”是cmd.exe start命令,我們將其用於兩個功能:

  1. 啟動net.exe最小化。
  2. taskeng.exe一旦啟動就完成,而net.exe不是等待它完成。

請注意,此解決方案並不完美,因為在啟動taskeng.exe之前會短暫閃爍net.exe,但通常不到一秒鐘。

答案2

您可以啟動服務(或任何其他程式)而無需任何視窗閃爍,甚至沒有最小化

建立任務:

  • 命令/腳本:mshta.exe
  • 新增參數(可選):
    "javascript: new ActiveXObject('shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"

由於您要啟動服務,因此需要管理權限,因此請檢查以最高權限運行在第一個選項卡。

要運行任務而不顯示任何窗口,您可以使用相同的技巧。使用以下命令建立快捷方式:

mshta.exe "javascript: new ActiveXObject('shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"

筆記

  • 運行捷徑的使用者必須是管理員,因為普通使用者只能執行他們的任務,而該任務具有最高權限。否則,該schtasks命令將失敗並顯示“訪問被拒絕”。
  • 如果任務位於任務資料夾中,則該任務/tn <TASK-NAME>來自/tn <FOLDER>\<TASK>shell,您必須雙反斜線mshta在快捷方式的命令中轉義它。
  • 某些防毒程式(至少卡巴斯基)可能會將使用mshta這種方式的任務視為可疑或潛在風險,從而將其刪除。
  • 您可以使用此技巧來運行任何隱藏的程序,而不會彈出任何程序。只需替換net.exe為您的程式名稱和start <SERVICE-NAME>具有所需參數的部分即可。

答案3

最小化啟動程序

只有這對我有用,Windows 11

相關內容