3

После создания запланированной задачи после выполнения этого вопроса суперпользователя я могу успешно запустить службу без запроса 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 запускается. Затем он исчезает через несколько секунд.

Как сказать планировщику заданий запускать целевую программу тихо (или свернуть) без всплывающего окна? Если бы всплывающая командная строка была свернута, это было бы хорошо.

2 ответа2

2

Проблема в том, что когда вы настраиваете ярлык для запуска свернутым, вы запускаете свернутую только программу, запускающую запланированное задание, а не программу, выполняющую задание. Вам нужна еще одна часть в последовательности запуска машины Rube Goldberg, внесите следующие изменения:

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

Первым "запуском" является команда cmd.exe start , которую мы используем для двух функций:

  1. Запуск net.exe свернут.
  2. Завершите работу taskeng.exe как только net.exe а не ожидайте его завершения.

Обратите внимание, что это решение не идеально, так как taskeng.exe будет мигать до тех пор, пока не будет запущен net.exe , но обычно меньше секунды.

0

Вы можете запустить службу (или любую другую программу) без какого-либо вспыхивающего окна, даже не свернув его.

Создать задачу:

  • Команда / скрипт: 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> с необходимыми параметрами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .