解決 mklink 使用中的各種坑(硬連結,軟連結/符號連結,目錄連結)
阿新 • • 發佈:2019-02-16
通過 mklink 命令可以建立檔案或資料夾的連結,而這種連結跟快捷方式是不一樣的。然而我們還可能會遇到其使用過程中的一些坑,本文將整理這些坑並提供解決方法。
0x00 背景介紹:mklink
mklink
可以像建立快捷方式一樣建立檔案或資料夾的連結,但不同於快捷方式的是,mklink
建立的連結絕大多數程式都不會認為那是一個連結,而是一個實實在在的檔案或資料夾。
例如,為 D:\OneDrive\Foo
資料夾建立連結到 D:\Foo
,那麼 D:\OneDrive\Foo
中有一個 .git
檔案時,絕大多數程式都會以為 D:\Foo
中也存在 .git
檔案,而且檔案內容一模一樣。
mklink
可以建立符號連結、硬連結和目錄連結。在 cmd
中輸入 mklink
即可看到以下這樣的幫助資訊。
C:\Users\lvyi>mklink
建立符號連結。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 建立目錄符號連結。預設為檔案
符號連結。
/H 建立硬連結而非符號連結。
/J 建立目錄聯接。
Link 指定新的符號連結名稱。
Target 指定新連結引用的路徑
(相對或絕對)。
具體的使用不是本文的重點,可以閱讀本文末尾的參考資料瞭解,這裡只給出他們之間的大體區別。
使用方式 | 適用於 | 快捷方式小箭頭 |
---|---|---|
不帶引數 | 檔案 | 有 |
/D | 資料夾 | 有 |
/J | 資料夾 | 有 |
/H | 檔案 | 無 |
上面的表格順序,從上到下的行為從越來越像快捷方式到越來越像兩個獨立的資料夾。
0x01 坑:PowerShell 中沒有 mklink 命令
是的,PowerShell 中就是中沒有 mklink 命令。如果要在 powershell 中使用 mklink,那麼得先敲 cmd
進入 cmd
之後再使用 mklink
0x02 坑:許可權
預設我們的使用者賬戶是 Administrators
組的,會繼承它的許可權設定。正常情況下,我們使用 mklink
是可以成功執行的。但如果檔案系統的設定比較奇怪或者重灌過系統,那麼可能出現沒有許可權的錯誤。
C:\Users\lvyi>mklink /D D:\Foo D:\OneDrive\Foo
你沒有足夠的許可權執行此操作。
這時,使用管理員許可權啟動 cmd
是最簡單的做法。不過也可以考慮在 本地安全策略(secpol.msc)\本地策略\使用者權利分配
中添加當前使用者。