エクスプローラーで、「表示」→「表示」→「プレビューウィンドウ」を選択するか、「Alt+P」を押すと、ウィンドウ右側にプレビューウィンドウが表示される。この部分は、ファイルに対して定義された「プレビューハンドラ(Preview Handler)」が表示をする。今回は、このプレビューウィンドウとプレビューハンドラについて解説する。
なお、詳細は後述するが、PowerToysをインストールしている場合、プレビューハンドラが追加で登録され標準とは異なる状態になる。原稿執筆時点の最新版である「v0.69.0」では、不具合があってテキスト型式のプレビューが表示されないことがある。以下の内容を試すときには、PowerToysの「File Explorer add-ons」にある「ソースコードファイル(モナコ)」をオフにしておいてほしい。
プレビューハンドラとは?
プレビューハンドラは、ファイルの拡張子に対して定義される。テキストや画像など、Windows標準のものがあるが、サードパーティアプリケーションのファイル形式に関しては、アプリケーション側で用意する必要がある。プレビューハンドラは、エクスプローラーが呼び出すモジュールになっていて、一定の仕様で作ることでサードパーティでも開発が可能だ。詳細は以下で説明されている。
●プレビュー ハンドラーとシェル プレビュー ホスト
https://learn.microsoft.com/ja-jp/windows/win32/shell/preview-handlers
プレビューハンドラは、レジストリの以下のキーに登録されている。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\PreviewHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PreviewHandlers
HKEY_LOCAL_MACHINE(以下、HKLM)に登録されているのは、システム標準のプレビューハンドラで、HKEY_CURRENT_USER(以下、HKCU)に登録されているのはユーザーごとに登録されたプレビューハンドラで、こちらはHKLMとの差分になっている。
ここに登録されているプレビューハンドラに対応するGUIDを、HKEY_CLASSES_ROOT(以下、HKCR)にあるファイル拡張子に登録することで、ファイル形式に対して、プレビューハンドラが対応する。具体的には、拡張子のキーの下にある「HKCR\<拡張子>\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}」が、プレビューハンドラの指定となり、このキーの既定値にプレビューハンドラのGUIDが登録されている。
具体的に見てみよう、Excelのブックファイルの拡張子「.xlsx」のレジストリ登録は、「HKCR/.xlsx」にある。レジストリエディタで「HKEY_CLASSES_ROOT\.xlsx」を開くか、PowerShellのコマンドで、
Get-ChildItem -Path "Registry::HKEY_CLASSES_ROOT\.xlsx\ShellEx\"
とすると、ShellExサブキーの下を見ることができる。
「{8895b1c6-b41f-4c1c-a562-0d564250836f}」サブキーの既定値は、「{00020827-0000-0000-C000-000000000046}」となっており、HKCR\CLSIDの下を探せば、
Get-Item -Path "Registry::HKEY_CLASSES_ROOT\CLSID\{00020827-0000-0000-C000-000000000046}"
これが“Microsoft Excel previewer”であるとわかる。
テキストファイル形式の簡易なプレビューハンドラ指定
もう1つ、中身がテキストファイルになっているファイル形式の場合、簡易な方法で、Windowsに組み込まれたテキスト・プレビューハンドラを指定できる。それは、前述の「HKCR\<拡張子>」のキーに文字列値として「PerceivedType」を定義し、データとして「text」を指定する。これで、どんな拡張子でもプレビューウィンドウにテキスト型式で表示できるようになる。XMLなど、中身がテキスト型式になっているファイルは結構ある。この方法を使うと、簡単な方法で、ファイルのプレビューが可能になる。
ただし、前述の「ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}」に、プレビューハンドラが登録されていると、そちらが優先される。
実際にテストしてみることにしよう。拡張子「.ps1」は、PowerShellのスクリプトファイルの拡張子だ。標準では、このファイルは、プレビューが表示されない(PowerToysでプレビューハンドラを使っていないとき)。
キー:HKEY_CLASSES_ROOT\.ps1
名前:PerceivedType
種類:REG_SZ
データ:text
というレジストリエントリを、レジストリエディタまたは、PowerShellで以下のコマンドを実行して書き込む。
Set-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\.ps1" -Name "PerceivedType" -Value "text"
確認は、以下のコマンドでできる。
Get-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\.ps1"
これで、「.ps1」ファイルのプレビューが表示されるようになる。なお、設定を削除するには、
remove-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\.ps1" -Name "PerceivedType"
とする。
この連載の記事
-
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 - この連載の一覧へ