2007年8月13日月曜日

Google Earthを Cドライブ以外にインストールする 3

おもしろいものというのは
Windows Server 2003 Resource Kit Tools
に含まれるlinkd.exeです。
これを使って、Google EarthCドライブ以外にインストールしてみました。

まず、Windows Server 2003 Resource Kit Toolsからlinkd.exeを取り出します。

1. rktools.exeは自己解凍書庫なのでまずこれを解凍します。
a.解凍ツールで解凍します。
b.解凍できない場合は
1. %TEMP%の中のファイルを削除してきれいにします。(ファイル名を指定して実行→%TEMP%)
2. rktools.exeを実行します。
3. %TEMP%にできたIXP000.TMPフォルダをほかの場所にコピーして、Setup Wizardをキャンセルします(Cancel→Exit→Finish)。

2. ファイルを抽出します
a. CドライブにTEMPと言うフォルダを作り、解凍したrktools.msi, rktools_p.cab, rktools_s.cabの3つのファイルを入れます。
b. 同じくCドライブにTEMP2というフォルダを作ります。
c. C:\TEMPをカレントフォルダにしてコマンドプロンプトを開きます。(ファイル名を指定して実行→CMD→cd "c:\TEMP")
d. 以下のコマンドを実行します。

start /wait msiexec /a rktools.msi targetdir="C:TEMP2" /qn

e. C:\TEMP2にWindows Server 2003 Resource Kit Toolsが抽出できました。

3. linkd.exeを見つけて、PATHの通った場所(例:C:\WINDOWS\system32)にコピーします。

作業に使ったフォルダ類(TEMP等)は必要が無いので、捨てても構いません。
ですがTEMP2に抽出したWindows Server 2003 Resource Kit
Tools
は、何かに使うことがあるかもしれませんので取っておいたほうが良いかもしれません。
 

使い方は,コマンドプロンプトから

linkd A B

A = 新しく作るリンク名(Bフォルダへのショートカット)
B = 元からあるフォルダ

というように使います。例えば

linkd "C:\Program Files\Google\Google Earth" "D:\Google Earth

とすると
D:\Google Earthが元からあるフォルダ本体で
C:\Program Files\Google\Google Earth というリンクができる。

解除するには
linkd "C:\Program Files\Google\Google Earth" /d
とします。


実際に使う前に、シンボリックリンクが、どういうものか色々試してみました。

自分のマルチブートの環境では、どのパーティションのWindowsを立ち上げても、常にWindowsは"C"ドライブになっており、起動したWindowsから他のWindowsは見えないようになっています。
どのWindowsから見ても、ドライブ("D:\"とか"E:\")は同じパーティションを指します。
まず、"C:\HONTAI"(リンク元)が存在しない状態で
linkd "E:\LINKTEST" "C:\HONTAI"
としてみました。
Cannot create a link at:E:\LINKTEST
とエラーが出て空のE:\LINKTESTフォルダができました。
Linuxのln コマンドは、リンクを張るだけなら可能なので、そこが少し違います。

今度は、"C:\HONTAI"というフォルダを作り、適当なファイルを入れて
linkd "E:\LINKTEST" "C:\HONTAI"
としました。
E:\LINKTESTというフォルダができました。全く普通のフォルダと同じで区別できませんが、Dirコマンドで見てみると

2007/08/08 13:37 <JUNCTION> LINKTEST

となっておりリンクであることが判ります。
エクスプローラで中を見てみると、"C:\HONTAI"と全く同じでした。中のファイルを削除したり移動すると、"C:\HONTAI"のファイルも削除されました。アドレスバーは"E:\LINKTEST"と表示されています。
"C:\HONTAI"(本体)を削除して、"E:\LINKTEST"を見てみると、エラーになりました。

linkd "E:\LINKTEST" /d

とすると、E:\LINKTESは削除されますが、普通にエクスプローラからも削除できました。しかし、試しにもう一つ、作ってあった、"E:\LINKTEST2"を

linkd "E:\LINKTEST2" /d

として削除しようとしたら
The delete operation failed.
とでて、削除できませんでした、色々調べましたが未だに理由が不明です。エクスプローラから削除しました。

削除したリンクを元に戻して、linkd.exeがインストールされていない違うWindowsを起動しました。
"E:\LINKTEST"をエクスプローラで見てみると、リンク先が無い旨のエラーが出ました。
"C:\HONTAI"を作ってもう一度見てみると、リンクされました。

今度はLinuxからEドライブをマウントして、"E:\LINKTEST"を見てみましたら、中身が空っぽのフォルダでした。しかしLinuxは通常NTFSを読み書きできないので、この結果では何とも言えないかもしれません。

メモ
・シンボリックリンクは『~へのショートカット』と同じだと認識しても良さそう。
・linkd.exeはリンクを作るためだけに必要で、常駐する必要はない。
・リンク元はあらかじめ存在してないといけない。
・64ビットOSでの動作確認
NTFSファイルシステム限定。
・XPが扱えるのはディレクトリのみで、ファイルへのリンクは不可。
・リンクはNTFSファイルシステムの機能で、Windowsの機能では無い。
・NTFSファイルシステムの通常の機能なので、特別に危険なものでは無さそう
・エクスプローラでは、リンクが全く普通のフォルダと同じに見えて区別できないので、アイコンを変えておいた方がよさそう。
・VISTAでは最初からシンボリックリンクを作れるらしい

大体理解できたので、これをふまえて、Google Earth をインストールしてみました。