KB5006670適用後もシステムファイルを入れ替えネットワーク共有プリンタへ接続できるようにする

投稿者: | 2021年10月18日

先週、ネットワーク 共有プリンタ への 接続 を阻害するクライアント側のWindows更新を特定し、アンインストールすると共に、Windows Updateを最大の1ヶ月一時停止させ、暫定対応としました。今回はシステムファイルを直接入れ替えることで、Windows更新 KB5006670 の適用後もプリンタを利用出来るようする海外の事例を参考に実践してみました。

参考事例

今回参考にしたのはこちらのフォーラムの中でがっつりと組んだバッチを自ら公開している例です(Great Tnx!!)。

KB5006670によって入替えられてしまった win32spl.dll (プリントスプーラのシステムファイル実体!?)を、それ以前の頃のバイナリと入替えてしまおうというもの。バッチの前半でDLLのバージョンチェックをして、差し替えが必要なバージョンがインストールされている場合、スプーラサービスを止めた後、 takeownicacls コマンドによってDLLファイルのアクセス権を適切に処理してから、少し古いバイナリへと入れ替える要領です。

差し替えに使うファイルは前回、KB5006670をアンインストールしたシステムから、自分で取り出しておくのが最も安全でしょう。入手できたDLLファイルのバージョン番号とファイルサイズは次の通り。

 

バッチをカスタマイズ

今回は、バッチと差し替え用DLLをLAN上の共有フォルダに配置し、作業者がエクスプローラでそのフォルダを開き、バッチを叩くだけというシナリオでの社内展開を想定しています。久しくDOSバッチを触っていないので、最低限のカスタマイズで済ませます。まずはバッチ冒頭でバッチと同じフォルダにあるDLLをシステムへコピーするように。

そしてあまりありえないパターンですが、バッチを重複実行してしまった際に、上述のDLLが残ってしまうのでこれを削除してからバッチを終了する仕様に。そして最終行に pause を入れて、ダブルクリック実行時にDOSウィンドウが勝手に閉じてしまうのを止めます。

 

Windows 10 21H1 で実践

それでは早速、KB5006670が適用されて共有プリンタに接続出来なくなっている、Windows 10クライアント(21H1 64bit)で試してみましょう。バッチと差し替えDLLはプリントサーバ上の共有フォルダに配置してあります。

図1.Windows Update 履歴にKB5006670

図1.Windows Update 履歴にKB5006670

現在インストールされている win32spl.dll を確認するとやはりv1288です。

図2.win32spl.dll v1288

図2.win32spl.dll v1288

ファイルエクスプローラで共有フォルダを開き、バッチファフィルを右クリック、管理者として実行します。

図3.バッチを管理者として実行

図3.バッチを管理者として実行

リモートリソースの実行に関するセキュリティ警告が出ますが実行します。

図4.リモートリソース実行に関するセキュリティ警告

図4.リモートリソース実行に関するセキュリティ警告

実行結果は次の通りで、途中で確認プロンプトなどはありませんが、何をしているのかは把握出来ると思います。

図5.DLL入れ替えバッチ実行結果

図5.DLL入れ替えバッチ実行結果

再びシステム内の win32spl.dll を確認するとv1266に入れ替わっていて、システム再起動せずとも共有プリンタが再び使えるようになりました。

図6.win32spl.dll v1266

図6.win32spl.dll v1266

今回はシステムファイルの差し替えというトリッキーな手段でしたが、Windows Updateを一時停止させたままでいるよりは、社内における世間体も多少は良くなるでしょう。バッチ化しておけば、ドメインユーザのログオンスクリプトに組み込んで作業を自動化してしまうことも可能ですが、もちろん自己責任で。

 

[2021.11.04追記]

2021年10月26日リリースの更新KB5006738を適用すれば、再びネットワーク共有プリンタを正常に使えるようになります。詳しくはこちらの記事にまとめました。

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA