Start service from Task Scheduler as minimised
After creating a scheduled task after following this Superuser question, I can successfully start a service without the UAC prompt. The options selected were:
Start a programProgram\script=C:\Windows\System32\net.exeAdd arguments (optional)=start "SERVICE-NAME"
Then in a batch file I call schtasks /run /tn TASK-NAME. After testing this, I created a shortcut to the batch file and set the Run option to Minimised.
This all works except that when the actual service is started, a maximised command prompt window pops up with the single line The SERVICE-NAME service is starting. This then disappears after a few seconds.
How do I tell Task Scheduler to start the target program silently (or minimised) without the pop-up? If the pop-up command prompt were minimised that would be fine.
12 Answers
The problem is that when you configure the shortcut to run minimized you launch minimized only the program that starts the scheduled task, not the program that the task executes. You need another piece in your Rube Goldberg machine launch sequence, make the following changes:
Program\script=C:\Windows\System32\cmd.exeAdd arguments (optional)=/c start /min net start "SERVICE-NAME"
The first "start" is the cmd.exe start command, which we use for two functions:
- Launch
net.exeminimized. - Make
taskeng.exefinish as soon asnet.exeis launched instead of waiting for it to finish.
Note that this solution is not perfect as taskeng.exe will flash briefly until the net.exe is launched, but usually less than a second.
You can start a service (or any other program) without any window flashing at all, not even minimized.
Create a task:
- Command/script:
mshta.exe - Add arguments (optional) :
"javascript: new ActiveXObject('shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"
Since you want to start a service, you need administrative rights, so check Run with highest privileges at the first tab.
To run the task without showing any window, you use the same trick. Create a shortcut with the following command:
mshta.exe "javascript: new ActiveXObject('shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"Notes
- The user that runs the shortcut must be an admin because normal users
can run only their tasks and this task is one with highest
privileges. Otherwise, the
schtaskscommand will fail with "access is denied". - If the task is in a task folder, the
/tn <TASK-NAME>is/tn <FOLDER>\<TASK>from the shell, and you must double the backslash to escape it in themshtacommand of the shortcut. - Some antivirus programs (at least Kaspersky) may consider a task
using
mshtathis way as suspicious or a potential risk, and thus delete it. - You can use this trick to run any program hidden without popping up whatsoever. Just replace
net.exewith the name of your program and thestart <SERVICE-NAME>part with the needed parameters.