none
目录联接与目录符号链接的区别在哪里?那些 Windows 预先建立的不能用的目录联接存在有什么意义? RRS feed

  • 问题

  • 通过 mklink 命令可以对一个目录创建目录联接(Junction)与目录符号链接(Directory symbolic link),似乎都是对一个目录创建一个“硬”链接,从我的使用经验来看区别是 Directory symbolic link 只能创建在同一盘符内,而 Junction 可以跨盘符创建链接。

    按理,不管是同一盘符还是跨盘符,都是“硬”链接,对一个目录的操作都会等同于对另一个目录的操作。但是对以下 Windows 自带的已建的 Junction 目录而言似乎完全没有什么意义

    <JUNCTION>     Documents and Settings [C:\Users]

    <JUNCTION>     Application Data [C:\Users\Administrator\AppData\Roaming]
    <JUNCTION>     Cookies [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies]
    <JUNCTION>     Local Settings [C:\Users\Administrator\AppData\Local]
    <JUNCTION>     My Documents [C:\Users\Administrator\Documents]
    <JUNCTION>     NetHood [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Network Shortcuts]
    <JUNCTION>     PrintHood [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]
    <JUNCTION>     Recent [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent]
    <JUNCTION>     SendTo [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\SendTo]
    <JUNCTION>     Start Menu [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu]
    <JUNCTION>     Templates [C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Templates]

    比如我 dir C:\Users 可以列出目录中的内容,但我 dir "C:\Documents and Settings" 却列不出任何内容,可以用 cd 命令进入 "Documents and Settings" 目录,但也是列不出任何内容,哪怕我新建一个目录也看不见,不过倒是可以 cd 进入在 C:\Users 中实际存在的子目录。但问题是在资源管理器中所有看得见的 %HOMEPATH% 目录下所有 Junction 性质目录全都无法双击进入,得到的都是“无法访问,拒绝访问”的提示。但 Directory symbolic link 性质的目录完全可以和“正常”目录一样操作。比如在 C:\Users 下有两个 Reparse Points 性质的目录:

     <SYMLINKD>     All Users [C:\ProgramData]
     <JUNCTION>     Default User [C:\Users\Default]

    在资源管理器中双击 All Users 是可以进入的,但双击 Default User 就不行。

    但是,如果是用户自己建的联结目录都可以正常使用。比如我用 mklink /j userdir target 命令建立一个名为 userdir 的联结目录,可以 dir userdir 列出 target 中所有的内容,也可以 cd 进入 userdir ,在里面建立和删除等操作,两个目录可以完全保持一致,对一个目录中的操作等同于对另一个目录的操作。也就是说,如果是用户自己建的联结目录完全能够体现出联结的意义。

    那么请问,Windows 预先建立的这些无法正常使用的 Junction 目录有什么意义?我能否手工把它们改为 Directory symbolic link 性质以正常使用?或者完全删除这些“无用”的联结?

    2018年11月9日 11:50