Windows 2000からNTFS5にともないリパースポイント機能が追加され、ジャンクションというドライブ/ボリューム/フォルダを任意のNTFSフォルダにマウントすることが可能になっている。ならば、システムドライブの各フォルダ(Program FilesやDocuments and Settingsなど)を別パーティション/ドライブに設定したくなるものだが、実際のところリリースされた当初からWindows 2000/XPでは色々と問題があり、それが解決じまいなのが現状である。
まず、異なるドライブ/パーティションでジャンクションを構成すると、Explorerがジャンクション下のフォルダを削除出来なくなる。つまり、ジャンクションをまたいだアクセスではフォルダを削除(実際にはごみ箱へ移動)が出来なくなる。ごみ箱に移動させずに即座に削除するようにすれば削除可能ではあるが、ごみ箱機能の利便性は失われる。これは、Explorerのドライブレターによる通常のアクセス方法と、Explorerごみ箱内部でのドライブGUIDでの操作の不一致によるものと思われる。また、この不一致(というか2000/XP EXPLORER.EXEの仕様)はジャンクションをごみ箱に移し、”ごみ箱を空にする”を実行すると、ドライブGUIDで辿ってジャンクション元のファイルまでも削除してしまうということまでも引き起こしている。
また、一部のソフトのアンインストーラーの中にはマウントポイントを解除してしまうものがある。新しいソフトでも古いソフトでも、ジャンクション機能が存在していなかった時代のソフトでもあります。なぜこんな無作法なことが起きるかは不明。世界的に超有名なソフトウェア会社のものでも起こるおものは起こります。個人的な経験では、最近のInstall Shield製の(アン)インストーラーではまず問題無いと思いますが、メーカー独自のアンインストーラーは注意が必要です。
ユーザープロファイルをジャンクションでマウントしているシステムで突然パージされると、即ブルースクリーン、とはなりませんが悲惨です。即座に再マウント出来れば良いのですが、出来なければパージされて空となったマウントポイントフォルダに次々とシステムやアプリケーションは必要なファイルを作成しようと試みます。プログラムによってはレジストリの値を結構変えます。再マウントには、ひとまずユーザープロファイルの保存先を変えるなり、別のシステムからマウント先のファイルを消したのち、再マウントするなりの必要に迫られます。
それからXP SP2のWindows Firewallは、”Display a notification when Windows Firewall blocks a program”(日本語版は”Windows ファイアウォールによるプログラムのブロック時に通知を表示する”)にチェックをしていても、ジャンクション上で走らせてるプログラムに対しては通知を表示しなくなる。”Program Files”を別パーティションでジャンクションしているシステムなどでは、手動でPort設定をする必要に迫られる。Firewall機能自体は問題ないようである。
あと、インストーラーの中にはご丁寧にもインストール対象ドライブの空き容量を調べて、不足してた場合に再設定を要求してくるものがあります。これだとインストール先のジャンクション上のドライブにいくら空き容量があっても、それをマウントしているドライブに空き容量がなければインストール出来ません。
と、せっかくのジャンクション機能だが、こんな状況であるから2000/XPをVistaのようにジャンクションとシンボリックリンクを張り巡らしたシステムにするにはいろいろと難があります。ちなみにVistaではExplorerのごみ箱問題は修正され、Windows Firewallも強化されている。2000/XPにもおこぼれが欲しいものだ。
本ブログの公開(Nov. 7, 2007)から、半年経ちますが、どうなりましたか?
まだ、XPでは問題がありますか?
また、これら問題を承知の上で、Program Filesをジャンクションしてしまう場合、
Program Filesを、別ドライブ(ex. F:\)へ移動させて、C:\Program Files\へジャンクションさせるのに、FDまたはCDからDOSの起動でできますか?
(ソフトウェアは、symlink(ln.exe)を使用する予定)
回答は期待してません。回答があったら、ラッキー程度で。
通りすがりゆえ、もう来ないかもしれませんし。
では。
コメント : ProgramFilesをジャンクションできないかと調べている通りすがり — 木, 6月. 26, 2008 @ 5:08 pm
XP/2000でのジャンクションを使用した問題点は、まだ改善されておりませんし、多分改善されないでしょう。
ジャンクションをするには、NTFSが必須ですのでDOSですと通常NTFSにアクセス出来ません。説明のようなProgram Filesを一旦移して元の場所へジャンクションするのはSafeModeで可能ですので、SafeModeでする事をお勧めいたします。
ちなみにジャンクションとln.exe(ハードリンク)、symlink(シンボリックリンク)はそれぞれ別々の機能です。
コメント : hdqrs — 金, 6月. 27, 2008 @ 11:43 am