LoginSignup
5
8

More than 5 years have passed since last update.

Windowsでシンボリックリンク作成@非管理者権限環境

Last updated at Posted at 2015-11-08

Windowsでは、シンボリックリンクの作成にmklinkコマンドを使います。

ファイルの場合
>mklink LINK_NAME TARGET
ディレクトリの場合
>mklink /D LINK_NAME TARGET

ただし、セキュリティ上の配慮から、無制限には実行できず、以下のいずれかの対応が必要です。
1. 管理者権限で起動したコマンドプロンプトの上で実行する
2. 事前にポリシーを変更しておく(20160313コメント反映 @asm さんありがとうございます)1
3. 事前に開発者モードを有効にしておく2
グローバルな設定に触りたくない場合、リンクを貼る際に毎度管理者権限でコマンドプロンプトを起動せねばならず面倒です。

管理者権限でmklinkを実行する

powershellを使います。
powershellでは、Start-Processコマンドに-Verb Runasオプションを指定することで、指定したコマンドを管理者権限で実行できます(実行時にUACの画面が出ます)。
そこで、以下のコマンドを用いることで、管理者権限でコマンドプロンプトを起動し直すことなくmklinkを実行することが出来ます。

powershell.exe -Command Start-Process -FilePath "cmd" -ArgumentList "/c","mklink","LINK_NAME","TARGET" -Verb Runas

処理をbatファイルにまとめる

上記のコマンドは、とても毎度タイプ出来る長さではないので、前処理などを含めてbatファイルにまとめ、パスの通ったディレクトリに設置します。Gistに一例置いておきました。

20190326追記
@cat2151 さんが、上記例をよりロバストに改良してくださいました。ありがとうございます。

batファイルの例

前処理の内容

  • LINK_NAMETARGETの順番を入れ替え(UNIX系のlnコマンドの順番にあわせた)
  • 渡された引数がファイルかディレクトリかを判別して/Dオプションを自動で付加

使い方

> ln-s TARGET LINK_NAME
5
8
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8