Есть ли способ запускать определенный скрипт каждый раз после завершения обновления 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)]]"