【暫定対処】AD環境下で「KB4461627」問題の対処スクリプトを書く
日常がはじまる。
— 天宮社 (@amemiyashiro) 2019年1月7日
「Excelが動かない」という問い合わせが殺到する。
やっぱり休暇中にリモートでWSUS確認しておくんだった。。。
「KB4461627をアンインストールするバッチを作成しログオンスクリプトに組み込む」という作業に午前中を費やす仕事始め
— 天宮社 (@amemiyashiro) 2019年1月7日
結論から先に書くと、batなりで以下を実行する。
"C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Oarpmany.exe" /removereleaseinpatch "{任意に書き換えていただきたい}" "{任意に書き換えていただきたい}" "1041" "0"
例えば
wusa.exe /uninstall /kb:4461627 /quiet /norestar
と書いてもうまくいかない。
前提
・Office2010導入環境である。
・AD環境は導入済みである。
・KB4461627をインストールしてしまいExcelが起動できなくなってしまった。
・管理している端末が大量にあるため、手動で対応することは非現実的である。
詳細
①レジストリキーを探す
KB4461627がインストールされてしまった場合、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall」の配下にキーが作成されているためそれを探す。
おそらく{90140000…から始まるキーがOfficeアップデート関係のため該当する可能性が高いと思われる。
私の環境の場合、上記のように表示された。
「DisplayName」の項目に「KB4461627」の記述があることを確認する。
②該当するレジストリより「UninstallString」の値をコピー
以下のような値が記述されているはずだ。
※{}内は環境依存と思われる為、各自の環境に合わせる必要があるだろう。
"C:\Program Files\Common Files\Microsoft Shared\OFFICE14\Oarpmany.exe" /removereleaseinpatch "{任意に書き換えていただきたい}" "{任意に書き換えていただきたい}" "1041" "0"
③上記でコピーした値を実行するbatを書く。
※runas等管理者権限で実行できるようにするとよい。
④にも関係してくるが、ログインスクリプトで自動化するため、エンドユーザ側で管理者パスワードを入力する操作を回避するため、以下のような二段構えとした。
・KB4461627_call.vbs(runasでbatを実行するためのvbs)
'Shell関連の操作を提供するオブジェクトを取得 Set objShell = WScript.CreateObject("WScript.Shell") 'runasコマンドを発行 objShell.Run "runas /user:hogehoge\administrator \\hogehoge\KB4461627_delete.bat" '待機1秒 WScript.Sleep 1000 'パスワード文字列を送信 objShell.SendKeys( "hogehoge" ) 'Enterキーの入力情報を送信 objShell.SendKeys( "{ENTER}" )
この書き方の場合、ドメイン管理者のパスワードをスクリプト内にベタ書きすることになる。あくまで暫定処置のため今回はこうしたが、本来はもう少し考えたいところだ。
・KB4461627_delete.bat(②で調査したUninstallStringの値のみを記述)
上記batは当然であるがドメインに参加しているコンピュータから参照できる\\hogehoge\配下に置く。
背景と試行錯誤
年末年始の休暇中各種報道で「KB4461627を適用してしまった場合Excelが起動不可能になる」という情報は知っていた。
職場としての仕事始めは1月4日であったのだがここも有給をとり、年末から続く大連休として骨を休めていたわけだ。
そうして連休明けの本日、仕事始めはのんびりと……などと思っていたら朝から「Excelが動かない」という問い合わせが殺到する場面に直面したわけである。
当初はwusa.exeでKBを指定すればいいのでは、と考えていたのだが実際にやってみるとうまくいかない。
どうもwusa.exeで指定できるKBはOSアップデートのものに限られるようだ。
こうして悪戦苦闘したりググったりしつつ、記述したやり方で自動化(とはいえダイアログは出てくるのでクリックする程度の操作は必要になる)することができた。
危うく1000台近い端末を情シスメンバーで分担して手動対応するはめになるところであった……
参考
今回の対応にあたって、以下の記事を参照した。
www.ka-net.org
「プログラムの追加と削除」 の一覧から手動でプログラムを削除する方法