当我在Windows 7上进行mklink时,访问被拒绝错误[重复]


34

这个问题已经在这里有了答案:

我的主目录作为用户phi是c:\ Users \ phi,我在c:\ Users \ abc下创建了一个目录。我需要从c:\ Users \ phi \ hello到c:\ Users \ abc \ hello的符号链接。

我运行以下命令

mklink c:\ Users \ abc \ hello c:\ Users \ phi \ hello

但是我得到“ 访问被拒绝”错误。用户phi是Administrator,因此在c:\ Users \ abc中写入文件没有问题。

为什么是这样?如何进行mklink?

Answers:


27

要点:

  1. 如果打开了UAC,则需要以管理员身份运行。(或至少是允许创建链接的安全策略)。
  2. /D如果链接用于目录,则需要使用该开关。
  3. 第一个参数是链接,第二个参数是原始文件夹。
  4. 链接不应该已经存在。

用法:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\

@LawrenceDol正确地说,对于非管理员用户,您需要特殊权限(SeCreateSymbolicLinkPrivilege),而对于管理员用户,则需要提升run-as-admin 权限。但是,是否也可以SeCreateSymbolicLinkPrivilege在管理员用户上进行设置,而不必提升为run-as-admin?这个问题:stackoverflow.com/questions/29956470/…表示为使管理员用户无需提升权限,必须禁用UAC。
CMCDragonkai

@CMCDragonkai:我认为没有必要提高海拔,但是我没有对此进行专门测试。在我看来,以前我是在普通命令窗口中使用管理员帐户创建链接的,而我始终保持打开UAC的权限。
劳伦斯·多尔


21

请注意,当您尝试在映射驱动器上创建联结时,将出现相同的错误。我一直不遗余力,直到在MSDN Hard Links and Junctions上看到本页上的示例为止。

简短的答案:您只能在本地卷上使用mklink。


这个链接不是很有用。(双关语意料之外)
rpattabi 2012年

这个答案似乎与问题无关。
kreemoweet 2012年

2
@kreemoweet的答案很重要,因为如果出现“访问被拒绝错误,当我在Windows 7上进行mklink时”,原因可能是您未在本地卷上使用该命令。
Reg Edit

是的,您可以mklink在本地卷之外使用。mklink /d link_name \\server\share效果很好。
UnclickableCharacter

你不能让他们一个映射驱动器。本地磁盘->远程?对。党喜欢它的NetWare 2.X
rburte

15

在Windows 7(及更高版本)中,您需要特殊的安全权限才能创建链接和结。作为管理员,您可以向使用secpol.mscset的用户授予此权限Local Policies\User Rights Assignment\Create symbolic links

如果用户当时已登录,则他们需要注销然后再登录才能创建链接。

请注意,链接可能会暴露某些应用程序中的安全漏洞的警告-我尚未研究这些漏洞可能是什么。


这是该问题的唯一合格答案,因为任何答案都不能落到细节上。停止以管理员身份工作!这是一种非常XP的态度,表明对Windows的安全风险认识不足。
托马斯·厄本

9

如果您经常使用Linux,请记住在Windows上交换了参数。

如果使用错误的顺序,您也会收到“访问被拒绝”的信息。因为您试图在原始文件已经存在的地方创建一个符号链接。

视窗: mklink /D link original

Linux: ln -s original link


4

我得到这个是因为我不小心碰到mklink /D了一个文件。该链接未在资源管理器中显示,但在Windows资源管理器中显示。使用命令提示符,我删除了原始无效目录链接,然后在没有该/D选项的情况下重新创建了该目录。

顺便说一句,即使我以管理员身份运行cmd.exe,也遇到“访问被拒绝”错误。


1

除了mklink以管理员身份运行外,还应确保对链接到的目标文件夹具有足够的权限。


1

如果您运行:

mklink / j C:\ path_to_link C:\目的地

它应该工作。就我而言,powershell和cmd产生相同的输出。对于powershell,您只需使用以下命令启动命令

cmd / c mklink ...


3
是的,但是要注意:联结比硬目录链接致命得多。从命令行或资源管理器中删除链接只是删除链接,但是从资源管理器中删除联结会删除目录中的所有内容,然后删除联结-OOPS。使用mklink /D src tgt代替。
劳伦斯·多尔

0

这听起来可能很奇怪,但是请检查您要创建的文件或文件夹是否不存在。有时很容易在cmd提示中忽略。


0

对于目录,您必须执行以下操作:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.