サーバーリプレースでプリンタの共有ができなくなった

はじめに:ここに書いてあることを参考にしようとは思わないでくれ。マジで責任が取れない。

とある穏やかな日の定時後、サーバー設定や機器更新作業に一切関わってないのに、巻き込まれた哀れな人間の記憶。
というかサーバー設定すらやったことねえよ。

客先納品に行ってる上司から接続確認を依頼されてたので20時頃まで居残ってダラダラして、そろそろ帰るかとしていた時に連絡が。
事象はここ1年ぐらい巷で割とよく発生していたという噂の、共有プリンタが追加できないとかいうやつ。
環境はDELL製のWindows Server2019だと思う。飛行機2本分の場所に納品されたVPN接続。

プリンタの追加から共有プリンターを追加しようとしたら「操作が失敗しました(エラー 0x0000011b)」と言われる。
IPアドレスで追加しようとしたり、手動設定しようとしてもダメ。エクスプローラー越しのダブルクリックもダメ。

ここまではまあ割とよくある現象だったので、いつもどおりレジストリ「コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print」に「RpcAuthnLevelPrivacyEnabled」を追加しファイアーウォールの通信の許可設定を外した。
それでも効果がなかったので最後の手段のSMB1.0有効化をしようとした。
ここからがいわゆる地獄のはじまり。

SMB1.0は他のお客様でもこっそり有効化したりしていたので、今までと同じようにサーバーの役割と機能を追加から有効化しようとしたら
「エラー:指定されたサーバーで機能を追加または削除する要求に失敗しました。1つ以上の役割、役割サービス、または機能をインストールできませんでした。参照されたアセンブリは見つかりませんでした」と表示された。

とりあえず sfc /scannowとdism.exe /online /cleanup-image /restorehealthをやってみたが問題なく修復されこれといったものは出ない。
サーバー発送前にセットアップした人が、1つだけWindows Updateがエラーでインストールできないとか何とか言っていたのと関係がありそうな気がしたので
試しに有効化が出来ている別拠点のWindows Updateを個別に適用してみたが効果なし。

この日は、早く帰って焼肉食べに行こうと思ってたから、お昼はかなり控えめにして間食もしなかったのでこの時点でフラフラ。
クリーンアップしたりゴミファイルを消す→有効化チャレンジ→修復する→有効化チャレンジをやって、気が付くと22時過ぎ。
焼肉屋のラストオーダーに間に合わないことが判明したので、やけくそになって近所の吉野家でスタミナ超特盛丼を食べ一息ついた。
で、戻ってからイベントログを見ると有効化に失敗した時のログにCBS.logがどうのこうのと書いてあったので見てみたら、なんかエラー表記があるのに気が付いた。
2022-08-24 09:20:29, Error                 CSI    00000009 (F) STATUS_SXS_ASSEMBLY_MISSING #3141# from CCSDirectTransaction::OperateEnding at index 0 of 1 operations, disposition 2[gle=0xd015000c]
2022-08-24 09:20:29, Error                 CSI    0000000a (F) HRESULT_FROM_WIN32(ERROR_SXS_ASSEMBLY_MISSING) #2983# from Windows::ServicingAPI::CCSITransaction::ICSITransaction_PinDeployment(Flags = 0, a = Microsoft-Windows-SMB1Client-D-Opt-Deployment-LanguagePack, version 10.0.17763.1, arch amd64, culture [l:5]'ko-KR', nonSxS, pkt {l:8 b:31bf3856ad364e35}, cb = (null), s = (null), rid = 'Microsoft-Windows-SMB1Client-D-Opt-Package~31bf3856ad364e35~amd64~ko-KR~10.0.17763.1.ca671460e77ae2c806f8b977747f89b5', rah = (null), manpath = (null), catpath = (null)[gle=0x80073701]
2022-08-24 09:20:29, Error                 CSI    , ed = 0, disp = 0)[gle=0x80073701]
2022-08-24 09:20:29, Info                  CBS    Failed to pin deployment while resolving Update: Microsoft-Windows-SMB1Client-D-Opt-Package~31bf3856ad364e35~amd64~ko-KR~10.0.17763.1.ca671460e77ae2c806f8b977747f89b5 from file: (null) [HRESULT = 0x80073701 - ERROR_SXS_ASSEMBLY_MISSING]
どうやら有効化→エラーとなったときにCBS.logにエラー情報が書き込まれるらしい。

でその後エラーメッセージとかでググったらこの辺がヒットした。
https://social.technet.microsoft.com/Forums/ja-JP/6a7467f2-2ff5-4945-b6fd-126d69ffd2e7/24441211061239227231330211239836861211521239112456125211254065?forum=winserver10TP
https://social.technet.microsoft.com/Forums/office/ja-JP/af60b28d-0dfb-4d01-9072-828151c112eb/snmp124691254012499124731239836861211522617812398124561252112540?forum=winserver10TP

ログにはko-KRとか書いてあるしこれも同じ問題っぽい。
富士通サーバーの注意書きには「最初の再起動をした時点で不要な言語パックが消え、稀に役割と機能の追加ができなくなる場合がある」と書かれているらしいが、これDELLサーバーだし、Windows Server2019の問題のような気がする。

lpksetup.exeでインストールされている言語を確認すると、日本語英語以外にもいくつか言語がインストールされていた。有効化が出来ている別拠点には日本語しか入っていなかったのに。
不要な言語パック消すか…?でも上の事象の人たちは消しても改善してなくて再インストールしてるし、どうするかなと代わりの対処法調べたり、うまくいった拠点のレジストリ引っこ抜いて全比較したりしていたけど
1時過ぎたので疲れて帰った。

翌日、日中はお客様が業務開始していたので手を付けられず、結局定時後に作業開始した。
日中調べた成果はこれ
https://www.web-dev-qa-db-ja.com/ja/windows-server-2016/サーバーをドメインコントローラーにした後、サーバー2016が役割または機能を追加できない/960000368/
この内容をふんわりと参考にした。

まず覚悟を決めて不要な言語パック消して再インストール、これで1時間ちょっとかかった。
時間がかかりすぎて二度と起動しなくなったらどうしようと怯えていたが、言語パック消すとこれぐらいはかかるらしい。
その後言語パックから韓国語入れ直し→エラーが出るという感じだったので、CBSログを見ると
エラーのところにKB50XXXXXXみたいな更新プログラムの名前が出てきた。
この時点で疲れて理解力と記憶力が低下していたので、上記サイトに書いてあったことを半ば忘れ、とりあえず該当KBの更新プログラムをアンインストールした。
そうして再度韓国語入れ直し→失敗→ログを見るってのをよくわからないままやっていき、最終的に
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageDetectにある名前に「31bf3856ad364e35」を含むキーの中にあった値を消した。
一応消す前にはエクスポートした。
最初はko-KRのやつだけ消せばいいのかなと思ったけど何も改善しなかったので、ko-KR以外も消した。

結果、SMB1.0を無事有効化することができた。
もしかしたら最初からHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackageDetectの中身を消しておけばよかったのでは?とかこれ以下にあるやつ全部消してもいけるのでは…?みたいな気がしなくもない。
やばいのを消すときに出てくる警告文とか所有者の変更とかせずにすんなり消せたし。

プリンタ共有の問題からここまで発展するとは正直思わなかった。
OS再インストールを回避した英雄やぞボーナス倍にしろやとか内心思っている。

今後の教訓としてとりあえず発送する前にSMB1.0は有効化しておこうと思った。