Запустіть службу від планувальника завдань як мінімізовану


3

Після створення запланованого завдання після виконання цього питання щодо Superuser я можу успішно запустити послугу без підказки 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
У плановому завданні переконайтеся, що Run whether user is logged on or notвибрано параметр , який я не бачив, як згадувалося у зв’язаному дописі ... також ознайомтесь із загальними вказівками щодо усунення несправностей: superuser.com/questions/1005192/…
Pimp Juice IT

Відповіді:


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не запуститься, але зазвичай менше секунди.


Чи taskeng.exeстосується процесу, який виконує завдання планувальника завдань у Windows?
AlainD

Відмінно, дякую. Я коротко спробував використати, startале не зміг правильно зрозуміти синтаксис. Це прекрасно працює. Коли net start SERVICE-NAMEзапуск дії ( ) запускається, але дуже короткий, є короткий спалах .
AlainD

Так, taskeng.exeце ви говорите.
Альберто Мартінес

Вам потрібно додати ""після першого START, інакше він буде неправильно аналізувати будь-який цитований аргумент як заголовок вікна, і даватиме помилку "Система не може знайти файл" для наступного аргументу. Використовуйте /c start "" /min net start "SERVICE-NAME".
stevek_mcc

@stevek_mcc Я протестував її перед тим, як опублікувати відповідь, і працював чудово, не додаючи зайвих цитат.
Альберто Мартінес

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команді ярлика.
  • Деякі антивірусні програми (принаймні Касперський) можуть розглядати завдання, використовуючи mshtaцей спосіб, як підозрілі або потенційні ризики, і таким чином видалити його.
  • Ви можете використовувати цей трюк, щоб запустити будь-яку приховану програму, не вискакуючи ні на що. Просто замініть net.exeім'я вашої програми та start <SERVICE-NAME>частину необхідними параметрами.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.