Windows 10 のデフォルト設定では、拡張子は表示されないようになっていますが、一目でファイルの種類を判別するためには拡張子を表示する設定が便利です。
その設定にある登録されている拡張子は表示しないの登録されているとはどのような拡張子を指すのでしょうか。
登録されていない拡張子
-
.png .webp と仮想の拡張子 .nonsubject の 3 つのファイルがあります。
-
登録されている拡張子は表示しない
-
しかし、登録されていない.nonsubject の拡張子は表示されたままです。
登録されている拡張子とは何か
条件 1 と 2 のどちらかか両方満たす場合に登録されている拡張子になります。
-
条件1 : HKCR に拡張子が登録してある
-
拡張子 (.nonsubject) のレジストリキーがあること。
HKEY_CLASSES_ROOT\.nonsubject
-
拡張子のキーの既定に参照先の値があること。
(例 nonsubject_auto_file) -
参照先のキーが実際に存在すること。
HKEY_CLASSES_ROOT\nonsubject_auto_file
通常のプログラムが関連付けをする方法です。
.nonsubject や nonsubject_auto_file キーには open や edit など実行が設定されていなくても構わない。キーが存在するだけで登録されていると判定される。
そのため、厳密には起動するプログラムがなくても登録されている拡張子になりうる。
-
-
条件2 : FileExts に拡張子が登録してある
ユーザーが選択したプログラムがある場合。
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.nonsubject\UserChoice
プログラムから開く の操作で作成されるキーです。次のセクションでもう少し詳しく解説します。
どちらかの条件を満たしていれば登録されている拡張子となります。
例外 : AlwaysShowExt と NeverShowExt
AlwaysShowExt 値があるファイルタイプは必ず拡張子を表示して、NeverShowEx 値があると絶対に表示しません。
-
AlwaysShowExt の例
HKCR\Unknown (登録されていないファイルタイプ)
HKCR\Directory (ディレクトリ)
HKCR\dllfile (.dll)
-
NeverShowEx の例
HKCR\lnkfile (.lnk)
HKCR\LibraryFolder (.library-ms)
HKCR\SearchFolder (.search-ms)
プログラムから開く の動作
-
未登録の拡張子(.nonsubject)のファイルは開くことができません。
-
この PC のアプリで開く からアプリ(メモ帳)を選択するとレジストリキーが作成されます。
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.nonsubject
履歴などが保存されますが、まだ拡張子は登録されていない状態です。
-
常にこのアプリを使って…をチェックしてアプリを起動すると UserChoice キーが追加され関連付けされます。また、元もと拡張子の登録がなかった場合は条件 1 のレジストリも同時に追加されます。
FileExts\.nonsubject\UserChoice
この状態までいくと拡張子(.nonsubject)は登録されている状態になります。