日期:2014-05-17  浏览次数:21473 次

mklink的参数j和参数d在实际应用中的区别是什么?
mklink的参数j和参数d在实际应用中的区别是什么?
我自己测试,只知道在dir中查看,j注明的是 [JUNCTION];d注明的是[SYMLINKD]
DIR的输出结果如下
######################################################
2010/03/06  14:30    <DIR>          .
2010/03/06  14:30    <DIR>          ..
2010/03/06  14:30                 0 a.txt
2010/03/06  14:20    <JUNCTION>     t1 [D:\testing\t2]
2010/03/06  14:27    <DIR>          t2
2010/03/06  14:20    <SYMLINKD>     t3 [t2]
######################################################
可是在窗口模式下对/j 和/d 所创建的 t1 和 t3两个对象进行实际操作又感觉不出来由什么区别。
------解决方案--------------------
符号链接(Symlink,Softlink)是对文件或目录的引用,实际上符号链接本身是一个“记录着所引用文件或目录的绝对或相对路径”的特殊文件,通过符号链接的操作都会被重定向到目标文件或目录。

交接点(Junction),也称为“再分析点”,是 NTFS 3.0 及以上文件系统(Windows 2000 及以上系统)的特性,它是链接本地目录(可跨卷)的访问点,通过交接点的操作都会被系统映射到实际的目录上。通过建立交接点,可以在保证一个目录实例(目录的一致性)的前提下,允许用户或程序从本地文件系统中的多个位置访问此目录。
------解决方案--------------------
对符号链接和快捷方式的“读、写、遍历”等操作都会被重定向到目标文件或目录;但对它们的“复制、删除、移动、配置 ACL”等操作只针对自身;符号链接不但可以应用于本地系统,还可以应用 UNC 路径。

对交接点内文件和子目录的“建立、删除、修改”等操作都被映射到对应的目录中的文件和子目录上;
对交接点的“复制、粘贴、剪切、配置 ACL”,只会影响此交接点;
在同一卷内移动交接点,只会影响此交接点;但在不同卷间移动交接点,会将此交接点转换为正常目录,并且交接点对应目录下的所有内容都会被移动;
通过“资源浏览器(Explorer.exe)”和“命令行 del”等工具删除交接点时,会同时删除对应目录下的所有内容(但不会删除目录);可通过“linkd.exe /d”安全的删除交接点;但在 vista 及以后的系统中,对交接点的删除会被正确的处理。

------解决方案--------------------
创建 symlink 需要有“SeCreateSymbolicLinkPrivilege”用户权利,administrators 组成员默认具有此权利。
这个权利可以在“本地安全策略(secpol.msc)\本地策略\用户权利分配”中设置。

http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx