Windows OSのファイルやフォルダパスへの参照を行う機能(ジャンクション・シンボリックリンク・ハードリンク)を試す

Windows OSにある、ファイル・フォルダパスへの参照リンクを作成する機能(リンク機能、ショートカットのように別の場所にあるファイル・フォルダへリダイレクトし、**リンクがあたかも実在するパスのように利用できる機能**)を、以降で試す。

リンクを作成する機能、3種類: **ジャンクション・シンボリックリンク・ハードリンク**を試す。

#   mklinkコマンド

始めに、mklinkコマンドを確認。

```
Microsoft Windows [Version 10.0.19045.2251]
(c) Microsoft Corporation. All rights reserved.

D:\...\リンク作成テスト>mklink
シンボリック リンクを作成します。

MKLINK [[/D] | [/H] | [/J]] リンク ターゲット

        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。
```

##   テスト用のサンプルフォルダ構成

テスト用のサンプルフォルダ構成は、以下のように用意。

```
D:\...\リンク作成テスト>tree /f
│  test2 - ショートカット.lnk
│  リンク作成時のコンソール出力.txt
│
└─test1
    └─test2
        └─test3
                test1.txt
```

#   mklink /j ディレクトリへのジャンクション

以下、Windowsコマンドプロンプト(管理者権限なし)。

##   mklink /j →成功OK

```
D:\...\リンク作成テスト>mklink /j mklink-j test1\test2
mklink-j <<===>> test1\test2 のジャンクションが作成されました


D:\...\リンク作成テスト>dir

    2022/11/19  20:54    <DIR>          .
    2022/11/19  20:54    <DIR>          ..
    2022/11/19  20:54    <JUNCTION>     mklink-j [D:\...\リンク作成テスト\test1\test2]
    2022/11/19  20:56    <DIR>          test1
    2022/11/19  20:56             1,233 test2 - ショートカット.lnk


D:\...\リンク作成テスト>mklink-j\test3\test1.txt
(⇒テキストファイルが開く →成功OK)
```

#   mklink /d ディレクトリのシンボリックリンク

以下、Windowsコマンドプロンプト(管理者権限あり)。

##   mklink /d (相対パス) →成功OK

```
D:\...\リンク作成テスト>mklink /d mklink-d test1\test2
mklink-d <<===>> test1\test2 のシンボリック リンクが作成されました


D:\...\リンク作成テスト>dir

    2022/11/19  21:45    <DIR>          .
    2022/11/19  21:45    <DIR>          ..
    2022/11/19  21:45    <SYMLINKD>     mklink-d [test1\test2]
    2022/11/19  20:54    <JUNCTION>     mklink-j [D:\...\リンク作成テスト\test1\test2]
    2022/11/19  20:56    <DIR>          test1
    2022/11/19  20:56             1,233 test2 - ショートカット.lnk


D:\...\リンク作成テスト>mklink-d\test3\test1.txt
(⇒テキストファイルが開く →成功OK)
```

##   mklink /d →権限なし

Windowsコマンドプロンプト(管理者権限なし)で、

```
D:\...\リンク作成テスト>mklink /d mklink-d test1\test2
この操作を実行するための十分な特権がありません。
```

##   mklink /d (絶対パス) →成功OK

```
C:\WINDOWS\system32>mklink /d mklink-d "D:\...\リンク作成テスト\test1\test2"
mklink-d <<===>> D:\...\リンク作成テスト\test1\test2 のシンボリック リンクが作成されました


C:\WINDOWS\system32>dir mk*

    2022/11/19  21:42    <SYMLINKD>     mklink-d [D:\...\リンク作成テスト\test1\test2]


C:\WINDOWS\system32>mklink-d\test3\test1.txt
(⇒テキストファイルが開く →成功OK)
```

#   mklink /h ファイルのハードリンク

以下、Windowsコマンドプロンプト(管理者権限なし)。

##   mklink /h →成功OK

```
D:\...\リンク作成テスト>mklink /h mklink-h.txt test1\test2\test3\test1.txt
mklink-h.txt <<===>> test1\test2\test3\test1.txt のハードリンクが作成されました


D:\...\リンク作成テスト>dir

    2022/11/20  10:26    <DIR>          .
    2022/11/20  10:26    <DIR>          ..
    2022/11/19  21:45    <SYMLINKD>     mklink-d [test1\test2]
    2022/11/19  21:22                18 mklink-h.txt
    2022/11/19  20:54    <JUNCTION>     mklink-j [D:\...\リンク作成テスト\test1\test2]
    2022/11/19  20:56    <DIR>          test1
    2022/11/19  20:56             1,233 test2 - ショートカット.lnk


D:\...\リンク作成テスト>mklink-h.txt
(⇒テキストファイルが開く →成功OK)
```

##   mklink /h →フォルダは不可

```
D:\...\リンク作成テスト>mklink /h mklink-h test1\test2
アクセスが拒否されました。
```

#   最終的なフォルダ構成表示をチェック

```
D:\...\リンク作成テスト>tree /f
│  mklink-h.txt
│  test2 - ショートカット.lnk
│  リンク作成時のコンソール出力.txt
│
├─mklink-d
│  └─test3
│          test1.txt
│
├─mklink-j
│  └─test3
│          test1.txt
│
└─test1
    └─test2
        └─test3
                test1.txt
```

# 詳細情報

https://atmarkit.itmedia.co.jp/ait/articles/1306/07/news111.html

引用: 
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606924/c01a39f6-d1d7-2bd3-c7fb-9f92761e6a5b.png)
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606924/35d87184-9217-685f-bf5a-aef92bca1843.png)