Запуск программы только при запуске ПК с использованием WOL

Можно ли создать событие или скрипт для запуска при запуске компьютера с помощью Wake-On-Lan?

Я не хочу запускать программу (автоматически), когда компьютер запускается нормально.

3 ответа

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

Следующая команда может использоваться для идентификации источника пробуждения:

powercfg -lastwake

В случае Wake-On-Lan (WOL) сообщаемое wake-устройство будет вашим Ethernet-контроллером.

Как только вы узнаете, что произошло такое событие, и укажите точное имя источника пробуждения, моя идея о том, как добавить скрипт триггера:

  1. Откройте окно просмотра событий и найдите событие WOL (где источником пробуждения является контроллер Ethernet).
  2. Щелкните правой кнопкой мыши событие и выберите "Прикрепить задачу к этому событию..."
  3. Выберите "Запустить программу" в качестве действия
  4. добавлять Powershell.exe и путь к вашему сценарию
  5. Для большего контроля, на шаге Finish установите флажок "Open the Properties..."
  6. На вкладке "Триггеры" отредактируйте триггер события, чтобы добавить более подробный запуск.

Некоторые ссылки и примеры, которые помогут начать работу:

Как уже упоминал Ramhound в комментариях, Windows не знает, как был включен компьютер. (WOL, событие таймера Bios, ручное включение и т. Д.)

Единственное, что вы можете получить из Windows, это то, произошел ли запуск компьютера после обычного перезапуска или события выключения, или если компьютер был запущен после неожиданного отключения питания или принудительного выключения.
Эту информацию можно найти в журнале событий.

Лучшее, что вы можете сделать, применимо, если вы точно знаете, что событие WOL происходит только в тот период времени, когда вы никогда не будете использовать свой компьютер самостоятельно. Вы можете настроить запуск запланированной задачи каждые 5 минут или около того в течение того периода времени, когда запускается скрипт для запуска приложения.
Задача должна быть настроена так, чтобы НЕ "будить" компьютер, поэтому она запускается только в том случае, если компьютер разбудил WOL. Сценарий должен сначала проверить, запущено ли уже приложение (если оно есть: выйти), и запустить приложение, если оно не запущено.

Дополнительно: если событие WOL происходит в случайное время, вы все равно можете использовать подход по расписанию, если вы настроили на своем компьютере НЕ использовать автоматический вход в систему. Если перед выходом из спящего режима вы обязательно выйдите из системы, компьютер выйдет из спящего режима по событию WOL, и никто не войдет в систему.
Вы можете проверить это в запланированной задаче и запустить приложение только в том случае, если никто не вошел в систему. Хотя это немного сложно, поскольку Windows не предоставляет легкой проверки для этого. Мой обычный подход к этому заключается в использовании tasklist | findstr explorer, Если есть пользователи, вошедшие в систему, вы получите 1 строку для каждого пользователя, потому что у каждого есть своя собственная копия файла explorer.exe. Но если никто не вошел в систему, то не будет запущен explorer.exe.

все еще не можете сделать это в Windows 10? Было бы очень интересно иметь возможность различать, запускается ли система после WOL или после кнопки включения.

Другие вопросы по тегам