web-dev-qa-db-ja.com

WindowsUpdateのたびに特定のスクリプトを実行する

Windows Updateが完了するたびに(つまり、再起動後、または再起動を必要としない更新後に)特定のスクリプトを実行する方法はありますか?

私のアプリケーションは MSCOMCTL.OCX更新 に苦しんでおり、Windows Updateが更新されるたびに、ユーザーは私の修正スクリプトを適用する必要があるようです。

[〜#〜] edit [〜#〜]:Windows7以降の場合。

6
krlmlr

最終的には、正解は「アプリケーションを修正する」だと思います。ただし、さまざまな理由でできない場合があります。そうは言っても...


Windowsのどのバージョンですか? Vista/2008以降では、スケジュールされたタスクを特定のイベントIDに関連付けることができます。システムイベントログで、WindowsUpdateClientのイベントID 19は、 WUAアップデートのインストールの成功 を示します。

Event Viewer WindowsUpdateClient Event ID 19

タスクスケジューラスナップインtaskschd.mscを起動します。 「タスクスケジューラライブラリ」を右クリックし、「基本タスクの作成...」を選択します。

Create Basic Task

次の画面で、名前と簡単な説明を入力し、「次へ」をクリックします。

Generic name and description

「特定のイベントがログに記録されたとき」というラベルの付いたラジオボタンをクリックし、「次へ」をクリックします。

When a specific event is logged

ログとして「システム」、ソースとして「WindowsUpdateClient」、イベントIDとして「19」を選択し、「次へ」をクリックします。

Log source and event ID

「プログラムの開始」ラジオボタンをクリックし、「次へ」をクリックします。

Start a program

「fixit」スクリプトまたは実行可能ファイルへのパスを指定し、「次へ」をクリックします。

path to script

設定が正しいことを確認し、[完了]をクリックします。

enter image description here

これで、設定とともにライブラリにスケジュールされたタスクが一覧表示されます。


これは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)]]"
13
jscott