
建立計劃任務後如下這個超級用戶問題,我可以在沒有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
命令,我們將其用於兩個功能:
- 啟動
net.exe
最小化。 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