Start service from Task Scheduler as minimised
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.exe
-
Add 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.exe
minimized. - Make
taskeng.exe
finish as soon asnet.exe
is 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
schtasks
command 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 themshta
command of the shortcut. - Some antivirus programs (at least Kaspersky) may consider a task
using
mshta
this 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.exe
with the name of your program and thestart <SERVICE-NAME>
part with the needed parameters.