WindowsXP、Windows2000のジャンクション機能は危険

Windows 2000からファイルシステムがNTFS5となり、リパースポイント機能が追加されました。
これによりジャンクションが使えるようになったのですが、この機能はかなり危険です。

「ジャンクション機能って何?」という人のために説明すると、 ドライブ・ボリューム・フォルダを任意のNTFSフォルダにマウントする機能(シンボリックリンクのようなもの)です。

どういうときに使えるかというと、 DドライブにProgram FilesやDocuments and Settingsの実体をおいて、Cドライブにそのジャンクションをマウントする
webサイトの開発などで、シンボリックリンクの代わりに使う
とか

しかし問題点が多々ある。

フォルダのジャンクションを消すと、実体のファイルが消える

フォルダのジャンクションを作成してマウントしていたとします。
このジャンクションが不要になり削除する場合、ごみ箱に入れるまでは問題がありませんが、 ごみ箱から削除された時点でジャンクションの実体のフォルダ以下のファイルが消えます。
ごみ箱にも残りません。

ディレクトリに対するジャンクションを削除するにはコマンドプロンプトで RD (RMDIR) コマンドを使わないといけません。
間違って DEL コマンドで削除すると、やはり実体のフォルダ以下のファイルが消えます。

実体とは別のドライブにジャンクションを作成するとフォルダが削除できない

実体とジャンクションが別のドライブに分かれているとき、Explorerがジャンクション下のフォルダをごみ箱に入れることができません。
ごみ箱に入れず即座に削除(Shiftを押しながら削除する)することはできます。

WindowsXP SP2のファイヤーウォールが正しく機能しない

WindowsXP SP2よりファイヤーウォール機能が強化されていますが、 『Windows ファイアウォールによるプログラムのブロック時に通知を表示する』にチェックを入れても、 ジャンクション上にあるプログラムに対しては通知を表示しません。
このとき手動でポート設定を追加する必要があります。



WindowsVistaでは、これらは修正されています。

ジャンクション機能自体の不具合ではないですが、それ以外にも問題が生じます。

インストーラがドライブの空き容量を判断できない

インストール対象のドライブの空き容量を調べるインストーラがありますが、別ドライブにジャンクションがあった場合、 正しく空き容量を計算できず、インストールできないことがあります。

アンインストーラがジャンクションを理解できない

ソフトには不要になったときのためにアンインストーラが付いている場合がありますが、 そのアンインストーラの一部にはジャンクションに不具合を起こすものがあります。

関連記事

スポンサーリンク

INTERSECT演算子 積集合を計算する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る