lnk

さっき気付いたんだけど、Windows XPでファイルの拡張子を.lnkに変更するとファイルの中身が消えて死んだリンクになる。拡張子を手動で元に戻してもダメ。中身は消え去るのみ。

…と思って終わりな君は甘い。右クリックから「元に戻す」をやると元に戻るのだ。ファイルの内容も復活する。何レベルまでアンドゥが効くかは調べてないけど、間違って重要なファイルの拡張子を.lnkにしてしまったときのために覚えておこう。まあ、拡張子を変えると使えなくなる可能性があるとかって警告のダイアログが出てyes/noを聞かれるので、世界中の人がそこで踏みとどまることを願う。

ちなみにディレクトリは拡張子を.lnkにしても壊れません。

(追記) 2004-01-07 19:08

あ、Windowsではシンボリックリンクが拡張子が.lnkな普通のファイルとして実装されていて、ユーザレベルのプログラムからもファイルとして見える(のかな?)。あとシンボリックリンクじゃなくて「ショートカット」だった。ならなぜ使っている拡張子が.lnkなのか。

友よ、その答えは風の中にある。

(追記) 2004-01-07 19:16

試してないけど、.lnkにしてしまったファイルを消さないでおけば、Linuxとかからマウントして.lnkファイルを読めば内容が読めると思う。普通のショートカットはバイナリダンプだと

00000000  4C 00 00 00 01 14 02 00  00 00 00 00 C0 00 00 00  L...............
00000010  00 00 00 46

ではじまる(by fileコマンドのmagicファイル)のだが、そうじゃない元のファイル情報が入っているのではないかと想像する。あくまで想像だが。

Linuxに実装されているNTFSは.lnkファイルをシンボリックリンクとして扱うことはしていない。

コメントはありません

  1. 通りすがりのものですが、WindowsのShell、つまりexplorerが .lnkの拡張子を持つファイルをショートカットとして扱っているだけなのでは? cmd.exe で コマンドラインから
    操作すれば、普通に見えると思う。
    あと、MS的には、.lnkのファイルはOLE2のモニカオブジェクトをファイルとして
    永続化したもので、そのexplorer.exeが扱うモニカオブジェクトをファイルとして
    保存(永続化)したものが .lnkという拡張子がついたファイルになる、
    ということだと思う。—–

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です