
После создания запланированной задачи после выполненияэтот вопрос Суперпользователя, я могу успешно запустить службу без запроса 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"
Первый «старт» — это 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>
в оболочке, и вы должныудвоить обратную косую чертучтобы избежать этого вmshta
команде сочетания клавиш. - Некоторые антивирусные программы (по крайней мере, Kaspersky) могут посчитать задачу, использующую
mshta
этот способ, подозрительной или потенциально опасной и удалить ее. - Вы можете использовать этот трюк, чтобы запустить любую скрытую программу без какого-либо всплывания. Просто замените
net.exe
на имя вашей программы иstart <SERVICE-NAME>
часть с необходимыми параметрами.
решение3
Запустить программу в свернутом виде
У меня работает только это, Windows 11