Назад | Перейти на главную страницу

Запускать определенный сценарий после каждого обновления Windows

Есть ли способ запускать определенный скрипт каждый раз после завершения обновления Windows (т.е. после перезагрузки или после обновления, которое не требует перезагрузки)?

Мое приложение страдает от Обновления MSCOMCTL.OCX, и кажется, что каждый раз, когда Центр обновления Windows обновляется, пользователь должен применять мой сценарий исправления.

РЕДАКТИРОВАТЬ: Для Windows 7 и новее.

Я считаю, что в конечном итоге правильный ответ - «Исправьте свое приложение». Однако вы не сможете сделать это по ряду причин. Что, как говорится...


Какая версия винды? В Vista / 2008 и выше вы можете связать запланированные задачи с определенными идентификаторами событий. В журнале системных событий событие с кодом 19 из WindowsUpdateClient указывает успешная установка обновления АВП.

Запустите оснастку планировщика заданий, taskschd.msc. Щелкните правой кнопкой мыши «Библиотеку планировщика заданий» и выберите «Создать базовую задачу ...».

На следующем экране введите имя и краткое описание и нажмите «Далее».

Щелкните переключатель с надписью «При регистрации определенного события», щелкните «Далее».

Выберите «Система» в качестве журнала, «WindowsUpdateClient» в качестве источника и «19» в качестве идентификатора события, нажмите «Далее».

Установите переключатель «Запустить программу» и нажмите «Далее».

Укажите путь к вашему сценарию или исполняемому файлу «исправить», нажмите «Далее».

Проверьте правильность настроек и нажмите «Готово».

Теперь вы увидите запланированное задание, указанное в библиотеке с вашими настройками.


Вот пример командной строки с использованием только C:\Windows\system32\schtasks.exeсинтаксис фильтра XPath занял у меня некоторое время. Похоже, планировщик заданий использует только подмножество XPath.

REM Create scheduled task triggered by WindowsUpdateClient event ID 19
schtasks /Create /TN "Post WUA Update Install" /TR "C:\scripts\your.fix.cmd" /SC ONEVENT /EC System /MO "*[System[Provider[@Name='Microsoft-Windows-WindowsUpdateClient'] and (EventID=19)]]"