「デバイスとプリンター」にプリンターが表示されない
いつからかは定かではありませんが、コントロールパネルのデバイスとプリンターで、表示されないプリンターがあることに気付きました。(Win10 64bit)
アプリケーションの印刷ダイアログではちゃんとプリンターリストに全て表示され、選択した機種で印刷できるので何の不都合もありませんでした。
ところが、常用プリンタの変更をしようとコントロールパネルから「デバイスとプリンター」を開いてみると、現在常用プリンタに設定してあるはずのプリンターが見えません。
それどころか、以前は確か 7つや 8つは並んでいたはずなのにえらく少なくあっさりしています。
動いているけど表示はされない・・・ これはおかしい!
ネットで調べてみると、特に海外ではこの事象は結構報告されています。レジストリの整合性が破綻しているとかPrint Spooler Serviceの問題とかドライバが古いとかいろいろ理由は推測されています。
とりあえず推奨の作業を少しやってみました。
- プリンタのトラブルシューティングを走らせる → 役に立たず
- ドライバは最新で問題なし → そりゃアプリから印刷はできるんですから
- Print Spooler Service 確認 → 変化無し
- レジストリHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace に {2227a280-3aea-1069-a2de-08002b30309d}を追加する → 変化無し {2227a280-3aea-1069-a2de-08002b30309d} はプリンタフォルダ CLSID
いろんなサイトでとりあえずごまかしている方法は、
デスクトップにでも新規フォルダを作成して、名前を
PRINTERS.{2227a280-3aea-1069-a2de-08002b30309d}
に変更することです。
これだと確かにこのフォルダを開くと全てのプリンタが表示されます。
でも何だかなあ~ 余分なフォルダが居座るのはスッキリしません。
さらに検索して、
https://www.thewindowsclub.com/printer-icon-not-showing-devices-printers-windows-10
の終わりの方に Windows サービスの変更手順が記載されているのを見つけました。
Device Management Enrollment Service – Manual
Device Association Service – Manual (Trigger Start)
Device Install Service – Manual (Trigger Start)
Device Setup Manager – Manual (Trigger Start)
DevQuery Background Discovery Broker – Manual (Trigger Start).
これがデフォルト設定だそうです。
PC→管理→サービスとアプリケーション→サービス を開きます。
私の環境では
Device Management Enrollment Service がありませんでしたが、他のサービスを全てデフォルト設定にしてみました。
再起動するとちゃんと全てのプリンターが表示されるようになりました。
どういう理屈かは分かりませんが、うまくいったからOKとしましょう。
追記(2022.10.20)
以前のシステム状態にバックアップファイルから復元する必要があったのですが、当然「デバイスとプリンター」にプリンターの一部しか表示されない状態に戻ってしまいました。
改めて上記のサービスを確認すると
Device Setup Manager
が「無効」になっており、これを「手動」に変更すると解消されました。
ほとんどの場合、この項目のみの変更でよいのではないかと思われます。
追記 (2023.01.07)
デスクトップに新規フォルダを作成して、名前を
PRINTERS.{2227a280-3aea-1069-a2de-08002b30309d}
に変更してプリンタフォルダを作ってしまうと、これを通常の方法では削除できなくなることがあります。フォルダ上で右クリックしても「削除」がメニューに出てきません。
こういう場合は、レジストリエディタで、
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel に
新しい値(DWORD)を作成し、
名前 {2227a280-3aea-1069-a2de-08002b30309d}
型 REG_DWORD
データ 0x00000001 (1) これが 「0」だと表示
とすると消えてくれます。