treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

2021年3月のセキュリティパッチで印刷時にBSoDを回避する

今月のWindows Updateを適用すると、ブルースクリーンが発生するらしい。手持ちの環境では発生していませんが、Windows10環境で回避策を試してみたのでご報告です。

印刷時にブルースクリーン?

今月分Windows10の更新プログラムのセキュリティアップデートを適用することで発生する既知の不具合に、印刷時にブルースクリーンのエラーが発生する(APC_INDEX_MISMATCH)情報が追加されていました。

support.microsoft.com

ここの「この更新プログラムに関する既知の問題」の末尾に追加されています。
(※)本記事現在ではちょっと翻訳がおかしいのですが、ざっくり要約すると、
「更新プログラムKB5000802とKB5000808を適用することで、一部のアプリで特定のプリンタに印刷する際にブルースクリーンとなり、APC_INDEX_MISMATCHエラーが発生する場合がありますよ」
という記載です。

対処方法はきっと更新プログラムの更新プログラムを適用することになるのだと思われますが、現在Microsoft側のステータスとしては調査中のため、さしあたっての対処方法は回避策を実施することになります。

ドライバのタイプを確認する

回避策を実行する前に、ドライバのタイプを確認してみます。
スタートメニューの「Windows 管理ツール」から「印刷の管理」を開きます。

f:id:treedown:20210315132620p:plain
※コントロールパネルの管理ツールから開いてもOK
開くと、MMC画面が開くので、左のツリー画面から「プリントサーバー」⇒「コンピュータ名(ローカル)」⇒「プリンター」の順に開いていきます。

f:id:treedown:20210315132632p:plain
開いてから、実際に使用中のプリンタの一覧の「ドライバーの種類」という欄に注目します。
「Type 4」のドライバは今回の問題が発生しないとされています。「Type 3」(※たぶん画面では「種類 3」となっているドライバ)のプリンタドライバは影響を受ける、ということのよう。

つまり、自社/自分の利用しているドライバが「Type 4」なら今回の件はひとまず気にしなくてもいいようです。

回避策その1:ドライバを変更する

例えば、京セラ製のプリンタを利用している場合、ドライバを違うタイプに変更することがメーカから推奨されています。

https://www.kyoceradocumentsolutions.co.jp/support/information/info_20210311.html

このリリースの案内文にある「回避策は"異なるタイプのプリンタドライバを利用する"こと」に該当する部分が、従来の「Type 3」ドライバから「Type 4」ドライバへ入れ替える、ということのよう。

他のメーカでも発生している事象に対する対策が公開されているかもしれませんので、メーカ推奨の対策を実施するのはよさそうに思えます。

回避策その2:回避用コマンド実行

メーカに情報が出てない場合、またBSoD問題に対象のプリンタなのか切り分けが出来ない場合、EoLなどの理由からType3ドライバしかない場合、など、セキュリティアップデートを適用した状態で回避策を実行しなきゃいけないケースでは回避策ようのコマンド実行でBSoDを回避することになるようです。
管理者でコマンドプロンプトを起動して、

f:id:treedown:20210315132727p:plain

実行するコマンドは

rundll32 printui.dll,PrintUIEntry /Xg /n "RICOH IPSiO SG 3100 RPCS-R"

と入力。"RICOH IPSiO SG 3100 RPCS-R"は先ほどの印刷の管理で確認したプリンタ名を入力しています。利用環境によってプリンタ名は(コピペして)変更してコマンドを実行します。
すると、

f:id:treedown:20210315132750p:plain
「プリンターユーザーインターフェイス」という画面が開きます。このAttributes欄を確認しておきます。(※ここにDirect(たぶんダイアレクトと読む)が表記されているかどうかがポイントのようです。)

管理者:コマンドプロンプトの画面に戻ってコマンドを実行します。

f:id:treedown:20210315132806p:plain
実行するコマンドは

rundll32 printui.dll,PrintUIEntry /Xs /n "RICOH IPSiO SG 3100 RPCS-R" attributes +direct

※プリンタ名は適宜変更

これを実行した後に再度「rundll32 printui.dll,PrintUIEntry /Xg /n "RICOH IPSiO SG 3100 RPCS-R"」コマンドを実行して情報を確認すると、

f:id:treedown:20210315132839p:plain
このようにAttributes欄にDirectの表記が増えていることが確認出来ます。
このDirectが(さしあたってパッチのパッチがリリースするまでの)回避策となるようです。

回避策その2を元に戻したい(非公式)

公式には元に戻す方法はMicrosoftからアナウンスされていないのですが、やってみたところ表記が戻ったのでいちおう記載しておきます。

管理者でコマンドプロンプトの画面を開いて、

f:id:treedown:20210315132901p:plain

実行するコマンドは

rundll32 printui.dll,PrintUIEntry /Xs /n "RICOH IPSiO SG 3100 RPCS-R" attributes -direct

と入力。Direct追加時に「+direct」としていたところを「-direct」に書き換えて実行します。すると、

f:id:treedown:20210315132925p:plain
Attributes欄にあったDirectはなくなりました。引数「+direct」で追加、「-direct」でオプションを除外(削除)という動きをするよう。

更新プログラムがリリースして回避策を実行した環境で更新プログラムの正常動作の確認には、今回実施した回避策をいったん解除しなきゃいけないので、この方法で戻すことが必要になると思います。

追記:

更新プログラムの修正版が配信されたようです。

support.microsoft.com

適用はテストしてからのほうがいいと思われますけど、BSoD発生済の環境では適用してみるのも手かもしれません。