あめみやしろぐ

お仕事(院内SE)のことをかいたり思いついたことをかいたりします。

【暫定対処】AD環境下で「KB4461627」問題の対処スクリプトを書く


結論から先に書くと、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アップデート関係のため該当する可能性が高いと思われる。
f:id:amemiyashiro:20190107173114j:plain
私の環境の場合、上記のように表示された。

「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\配下に置く。

④上記batをログオンスクリプト等に組み込む。

ログオンスクリプトで上記で作成したKB4461627_call.vbsを実行する。
これによりユーザがログイン時に管理者権限でKB4461627_delete.batが実行され、KB4461627がアンインストールされる、という動きとなる。

 

背景と試行錯誤

年末年始の休暇中各種報道で「KB4461627を適用してしまった場合Excelが起動不可能になる」という情報は知っていた。
職場としての仕事始めは1月4日であったのだがここも有給をとり、年末から続く大連休として骨を休めていたわけだ。
そうして連休明けの本日、仕事始めはのんびりと……などと思っていたら朝から「Excelが動かない」という問い合わせが殺到する場面に直面したわけである。
当初はwusa.exeでKBを指定すればいいのでは、と考えていたのだが実際にやってみるとうまくいかない。
どうもwusa.exeで指定できるKBはOSアップデートのものに限られるようだ。
こうして悪戦苦闘したりググったりしつつ、記述したやり方で自動化(とはいえダイアログは出てくるのでクリックする程度の操作は必要になる)することができた。
危うく1000台近い端末を情シスメンバーで分担して手動対応するはめになるところであった……