こんにちは、阿久津です。WindowsはMS-DOS時代の「属性」を今も引き継いでいます。ファイルもしくはフォルダーのプロパティダイアログを開きますと、「属性」セクションから<読み取り専用><隠しファイル>の有無を付与し、属性の詳細ダイアログではアーカイブの有無を切り替えることが可能です(図01)

図01 ファイルやフォルダーのプロパティダイアログにある「属性」セクション

MS-DOS時代のファイルやフォルダーに対する属性は、「アーカイブ」「システム」「隠し」「読み取り専用」の4つでしたが、Windows 10では「オフライン」「スクラブファイルなし」「固定」「固定解除」「整合性」「非インデックス対象ファイル」などを付与することもできます(図02)。

図02 コマンドラインから属性付与を操作する「attrib.exe」。多くの属性制御が可能です

ここで注目したいのが「隠し」属性。例えばデスクトップやフォルダー上で同属性を付けたファイルを用意しておけば、必要に応じて表示を隠せるため、ファイル操作が便利になります。リボンUIをサポートしたエクスプローラーからは<隠しファイル>のチェックボックスをオン/オフすることで設定を切り替えられますが、いちいちリボンを開くのは面倒ではないでしょうか(図03)。

図03 リボンの<表示>タブに並ぶ<隠しファイル>をクリックすれば、隠しファイルの表示/非表示を切り替えられます

そこでデスクトップのコンテキストメニューから隠しファイルの設定を切り替えるチューニングを紹介します。

1. 管理者権限でレジストリエディターを起動します。
2. レジストリエディターが起動したら、HKEY_CLASSES_ROOT\Directory\Background\shell\Windows.ShowHiddenFilesキーを開きます(ない場合は作成します)。
3. 文字列値「CommandStateSync」を作成します。
4. 文字列値「Description」を作成し、データを「shell32.dll,-37573」に変更します。
5. 文字列値「ExplorerCommandHandler」を作成し、データを「{f7300245-1f4b-41ba-8948-6fd392064494}」に変更します。
6. 文字列値「Icon」を作成し、データを「imageres.dll,-5314」に変更します。
7. 文字列値「MUIVerb」を作成し、データを「@shell32.dll,-37572」に変更します。
8. <×>ボタンをクリックして、レジストリエディターを終了します。

これで操作が完了しました(図04~22)。

図04 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して、<OK>ボタンをクリックします

図05 レジストリエディターが起動したら、HKEY_CLASSES_ROOT\Directory\Background\shellキーを開きます

図06 shellキーを右クリックし、<新規>→<キー>と順にクリックします

図07 キー名を「新しいキー #1」から「Windows.ShowHiddenFiles」に変更します

図08 Windows.ShowHiddenFilesキーを開き、右ペインの何もないところを右クリック。<新規>→<文字列値>と順にクリックします

図09 値名を「新しい値 #1」から「CommandStateSync」に変更します

図10 続いて右ペインの何もないところを右クリック。<新規>→<文字列値>と順にクリックします

図11 値名を「新しい値 #1」から「Description」に変更します

図12 文字列値「Description」をダブルクリックで開き、データを「@shell32.dll,-37573」に変更します

図13 続いて右ペインの何もないところを右クリック。<新規>→<文字列値>と順にクリックします

図14 値名を「新しい値 #1」から「ExplorerCommandHandler」に変更します

図15 文字列値「ExplorerCommandHandler」をダブルクリックで開き、データを「{f7300245-1f4b-41ba-8948-6fd392064494}」に変更します

図16 続いて右ペインの何もないところを右クリック。<新規>→<文字列値>と順にクリックします

図17 値名を「新しい値 #1」から「Icon」に変更します

図18 文字列値「Icon」をダブルクリックで開き、データを「imageres.dll,-5314」に変更します

図19 さらに右ペインの何もないところを右クリック。<新規>→<文字列値>と順にクリックします

図20 値名を「新しい値 #1」から「MUIVerb」に変更します

図21 文字列値「MUIVerb」をダブルクリックで開き、データを「@shell32.dll,-37572」に変更します

図22 レジストリエディターを終了します

それでは結果を確認しましょう。前準備として任意のファイルやフォルダーを作成し、プロパティダイアログから<隠しファイル>を有効にしてください。そして、デスクトップの何もないところを右クリックしてコンテキストメニューを呼び出すと、新たに<隠しファイル>が加わったことを確認できます。こちらをクリックすると、隠しファイルの表示・非表示が切り替わります(図23~24)。

図23 任意のファイル(フォルダー)を作成し、選択した状態で[Alt]+[Enter]キーを押してください。次に<隠しファイル>にチェックを入れます

図24 デスクトップの何もないところを右クリックして、コンテキストメニューの<隠しファイル>をクリックしてください。隠しファイルの表示/非表示を切り替えられます

今回のチューニングはエクスプローラーのリボンを利用する第426回と似ています。表示・非表示の切り替えを行う「Show Hidden Files Explorer Command」をGUIDで呼び出し、項目名やアイコンは「shell32.dll」や「imageres.dll」から呼び出すことで<隠しファイル>を実現しています。今回は割愛しましたが、通常のフォルダーに対するコンテキストメニューにも追加させたい場合は、HKEY_CLASSES_ROOT\Folder\shell\Windows.ShowHiddenFilesキーを作成してください。本チューニングを破棄する場合は、HKEY_CLASSES_ROOT\Directory\Background\shell\Windows.ShowHiddenFilesキーを削除します。

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus)