作業場所:
MKLINK コマンドを呼出して、リンクを作成する。
シンボリックリンクの作成には、管理者権限が必要。
( 管理者に成れるなら、同じ所にある "リンク作成、管理者権限で.wsf" を、
Windows Based Script Host で開いて、昇格のダイアログに OK する。)
リンク先を、相対パスで指定した場合、
シンボリックリンクでは、リンク先は、作成するリンクのある場所から、
その相対パスで指される。
他の種類のリンクでは、相対パスは、ここでの作業場所(CurrentDirectory)から
絶対パスに変換されてセットされる。
ハードリンクでは、
そのリンク先は、既に存在するファイルでないとならない。
( シンボリックリンク、ジャンクションでは、リンク先が存在しなくても
作成は可能だが、リンクの使用時にエラーとなる。)
また、リンク先は、同じドライブ(ボリューム)の中でなければならない。
( リンクではなく同一物の別名。全ての別名が削除される迄、削除されない。)
ハードリンクのリンクの名は、リンク先と同じ拡張子を付けないと、
それを開くアプリケーションが、別のものになってしまう。
( シンボリックリンクでは、リンク名に拡張子は関係ない。)
チェック cmd窓閉 に、
チェックあれば、コマンドの実行結果の出力を、こちらで受け取って、表示する。
チェックなければ、コマンドのウィンドウを閉じないで残す。
結果出力をこちらで受け取る場合、JIS にない文字は、? に文字化けするが、
リンク名やリンク先に、それらの文字を使っても問題ないようである。
結果表示が文字化けしても、リンクは正常に作られている。
この HTA への引数1つは、フォルダなら、作業場所(CurrentDirectory)の指定と取る。
"リンク作成、管理者権限で.wsf" も、(フォルダをドロップする等で) 引数1つあれば、
こちらへ中継するが、開くアプリケーションの選択ダイアログが出る時など、
その引数を渡してくれない場合があるようだ。
作業場所(CurrentDirectory)は、
例えば、作成するリンクの名がパスでなく名前のみなら、そこに、リンクが作られる、
というように、リンク名やリンク先が、相対パスの時、その解決に使われる。
但し既述したように、シンボリックリンクのリンク先は、相対パスで記述したままの、
リンクが作られるようである。
シンボリックリンク、ジャンクションでは、
リンク先が存在するか、ファイルか、フォルダかなど、こちらでは確認せず、
そのままコマンドへ渡す。( ハードリンクでは、実行前に確認する。)
パスのディレクトリ区切りに、/ も使用可能。
シンボリックリンクのリンク先パスの区切りには、/ を使うと、リンク先へ
アクセスできなくなるので、こちら側で、\ に変換するようにした。
他の場合、/ は多分、cmd で \ に変換されて問題ないと思われる。