ファイルの名前を表示上だけ変える方法(“desktop.ini”のカスタマイズ)

前回Windows + X メニューの編集を行いましたが、ここで次のように書きました。

Explorerでの表記上のショートカット名。ファイル名とは異なる。

これ、意味が分かりづらいので今回説明を行います。

広告

基本:Explorerではショートカットの拡張子は表示されない

Explorer はショートカットの拡張子 ".lnk" を非表示にしています。
これは割と素直な挙動ですし、日常的に目にしている人も多いことでしょう。

話がややこしくなるのは次からです。

同じフォルダ内にある同じ名前のファイル

まずは現物を見てください。

エクスプローラ(同じファイル名が2つ)

これ、どう見ても同じ名前が2つあるんですよね。
ところがご存知の通り、同じフォルダ内に同じ名前のファイルは存在できません。

実際、Get-ChildItem コマンドレットを叩いてみると、

Get-ChildItemの結果

これらが別のファイルであることがわかります。
では、これらを制御しているのは誰なのでしょうか。

"desktop.ini"

答えは既に画像上に映っていますが、この制御を行うのが "desktop.ini" です。

"desktop.ini" の表示

ただ、このファイルは存在していても見えていない人の方が多いのではないかと思います。
というのも、このファイルの属性には "h"(隠しファイル) と "s"(システムファイル) が設定されており、この設定をされているファイルは既定ではExplorerには表示されません* 1無論これは、誤って重要なファイルを削除することを防ぐ仕組みであろう。

そこで、

フォルダ・オプションの変更

上図のように、フォルダ オプションを開き、「保護されたオペレーティング システム ファイルを表示しない (推奨)」のチェックを外すと、h + S 属性のファイルも Explorer に表示されるようになります。

"desktop.ini"の中身

この "desktop.ini"の中身は次のようになっていました。

[LocalizedFileNames]
10 - AppsAndFeatures.lnk=@%SystemRoot%\system32\shell32.dll,-33248
09 - Mobility Center.lnk=@%SystemRoot%\system32\mblctr.exe,-1002
08 - PowerAndSleep.lnk=@%SystemRoot%\system32\powercpl.dll,-1
07 - Event Viewer.lnk=@%SystemRoot%\system32\shell32.dll,-22029
06 - SystemAbout.lnk=@%SystemRoot%\system32\systemcpl.dll,-1
05 - Device Manager.lnk=@%SystemRoot%\system32\systemcpl.dll,-100
04-1 - NetworkStatus.lnk=@%SystemRoot%\system32\shell32.dll,-22049
04 - Disk Management.lnk=@%SystemRoot%\explorer.exe,-22002
03 - Computer Management.lnk=@%SystemRoot%\system32\shell32.dll,-22023
02a - Windows PowerShell.lnk=@%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe,-109
02 - Command Prompt.lnk=@%SystemRoot%\system32\shell32.dll,-22022
01a - Windows PowerShell.lnk=@%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe,-109
01 - Command Prompt.lnk=@%SystemRoot%\system32\shell32.dll,-22022

これは推測――というより、読んだまま――ですが、「このフォルダ内の特定の名前のファイルを、表示上だけ別な文字列に差し替える」という意味なのでしょう。
そして、"=" 以降がそれであるのは想像に難くないでしょう。
おそらく、dll ファイルや exe ファイルなどはその文字列をファイルのどこかに保有しており、上記のようにそれを値で参照して取り出せるのではないでしょうか――そのファイルと値、および取り出せる値の対照表は見つかりませんでしたが。

そこで、今回は自前で作成したショートカットを以下のように周囲に倣ってリネームし、

  • PowerShell 7 (Admin).lnk -> 01a – PowerShell 7 (Admin).lnk
  • PowerShell 7.lnk -> 02a – PowerShell 7.lnk

"desktop.ini" を下記のように書き換えると、

[LocalizedFileNames]
10 - AppsAndFeatures.lnk=@%SystemRoot%\system32\shell32.dll,-33248
09 - Mobility Center.lnk=@%SystemRoot%\system32\mblctr.exe,-1002
08 - PowerAndSleep.lnk=@%SystemRoot%\system32\powercpl.dll,-1
07 - Event Viewer.lnk=@%SystemRoot%\system32\shell32.dll,-22029
06 - SystemAbout.lnk=@%SystemRoot%\system32\systemcpl.dll,-1
05 - Device Manager.lnk=@%SystemRoot%\system32\systemcpl.dll,-100
04-1 - NetworkStatus.lnk=@%SystemRoot%\system32\shell32.dll,-22049
04 - Disk Management.lnk=@%SystemRoot%\explorer.exe,-22002
03 - Computer Management.lnk=@%SystemRoot%\system32\shell32.dll,-22023
02a - Powershell 7.lnk=PowerShell 7(&A)
02a - Windows PowerShell.lnk=@%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe,-109
02 - Command Prompt.lnk=@%SystemRoot%\system32\shell32.dll,-22022
01a - Powershell 7 (Admin).lnk=PowerShell 7 (Admin)(&A)
01a - Windows PowerShell.lnk=@%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe,-109
01 - Command Prompt.lnk=@%SystemRoot%\system32\shell32.dll,-22022

Explorerの表示も次のように変わりました。

desktop.ini編集後のExplorer

Windows + X メニューの中身も下記のように置き換わりました。

カスタマイズ後のWin+Xメニュー

注釈[+]

どうしようもない雑記を書いてる場所だよ