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