Доступ запрещен ошибка, когда я mklink на Windows 7

87715
prosseek

Мой домашний каталог - c: \ Users \ phi как пользовательский phi, и я создал каталог по адресу c: \ Users \ abc. Мне нужно символическую ссылку из c: \ Users \ phi \ hello в c: \ Users \ abc \ hello.

Я запускаю следующую команду

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

Но я получаю доступ отказано в ошибке. Пользователь phi является администратором, поэтому у меня нет проблем с записью файлов в c: \ Users \ abc.

Почему это? Как на мклинк?

30

10 ответов на вопрос

24
prosseek

Я нашел ответ с этого сайта . Короче говоря, я должен был запустить cmd.exe от имени администратора.

Для справки, это также может быть причиной: http://superuser.com/questions/264181/using-mklink-h-results-in-access-is-denied Wouter 7 лет назад 4
Если вы попытаетесь использовать параметр / H при связывании папок, вы получите доступ запрещен. Вам нужно использовать / D один для папок. Это то, что содержится в ссылке Wouter. +1 к Вутеру, спасибо дружище! :) CausingUnderflowsEverywhere 7 лет назад 5
22
rpattabi

Important points:

  1. You need to run as admin if UAC is on. (or at least security policy to allow creation of links).
  2. The /D switch needs to be used if the link is for directory.
  3. First parameter is a link, second parameter is the original folder.
  4. Link should not exist already.

Usage:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\ 
@LawrenceDol Правильно ли говорить, что для пользователей, не являющихся администраторами, вам необходимо специальное разрешение (`SeCreateSymbolicLinkPrivilege`), в то время как для пользователей с правами администратора вы должны повышать уровень с помощью run-as-admin. Но тогда возможно ли также установить `SeCreateSymbolicLinkPrivilege` для пользователя-администратора и избежать необходимости повышения с помощью run-as-admin? Этот вопрос: http://stackoverflow.com/questions/29956470/is-it-possible-to-add-a-privilege-to-the-standard-user-token-created-for-an-admi?noredirect=1&lq = 1 указывает, что для административных пользователей не нужно повышать, UAC должен быть отключен. CMCDragonkai 7 лет назад 0
@CMCDragonkai: Я не думаю, что повышение необходимо, но я специально не проверял это. Мне кажется, что я создал ссылки, используя учетную запись администратора в обычном командном окне, и всегда оставляю UAC включенным. Lawrence Dol 7 лет назад 0
21
rburte

Обратите внимание, что та же ошибка будет отображаться при попытке создания соединений на подключенных дисках . Я старался изо всех сил, пока не наткнулся на примеры на этой странице, посвященные жестким ссылкам и соединениям MSDN .

Краткий ответ: вы можете использовать mklink только на локальных томах.

эта ссылка не очень полезна. (каламбур непреднамеренный) rpattabi 11 лет назад 0
Этот ответ не имеет отношения к вопросу. kreemoweet 11 лет назад 0
@kreemoweet ответ уместен, потому что если вы получаете сообщение «Ошибка доступа запрещена, когда я запускаю ссылку на Windows 7», возможно, причина в том, что вы не используете команду на локальном томе. Reg Edit 7 лет назад 2
13
Lawrence Dol

В Windows 7 (и более поздних версиях) вам нужны специальные привилегии безопасности для создания ссылок и соединений. Как администратор вы можете предоставить это разрешение пользователям, использующим secpol.mscдля установки Local Policies\User Rights Assignment\Create symbolic links.

Если пользователь вошел в систему в то время, он должен выйти и снова войти, чтобы иметь возможность создавать ссылки.

Обратите внимание на предостережение о том, что ссылки могут обнажать недостатки безопасности в некоторых приложениях - я не исследовал, какими могут быть эти недостатки.

Это единственный приемлемый ответ на эту проблему для любого ответа не до мелочей. Хватит работать в качестве администратора! Это очень опытный подход, демонстрирующий недостаточную осведомленность о рисках безопасности, которым подвержена любая Windows. cepharum 7 лет назад 0
9
Sascha

Если вы часто используете Linux, помните, что параметры поменялись местами в Windows.

Если вы используете неправильный порядок, вы также получите «Отказано в доступе». Потому что вы пытаетесь создать символическую ссылку, где оригинал уже существует.

Окна: mklink /D link original

Linux: ln -s original link

4
Peter Joles

Я получил это, потому что я случайно наткнулся mklink /Dна файл. Ссылка не отображалась в проводнике, но в Windows Explorer. Используя командную строку, я удалил исходную недействительную ссылку на каталог, а затем воссоздал ее без /Dопции.

Кстати, я получаю сообщение об ошибке «Доступ запрещен», хотя я запускаю cmd.exe от имени администратора.

1
Martin Wildam

Помимо работы в mklinkкачестве администратора, вы также должны убедиться, что у вас достаточно прав для папки назначения, на которую вы ссылаетесь.

1
Simons0n

Если вы запускаете:

mklink / j C: \ path_to_link C: \ destination

он должен работать. В моем случае powershell и cmd выдают одинаковый результат. Для powershell вам нужно только запустить команду с

cmd / c mklink ...

Да, но ** будьте осторожны **: соединения гораздо более смертоносны, чем жесткие ссылки на каталоги. Удаление ссылки из командной строки или проводника просто удаляет ссылку, но удаление соединения из проводника удаляет все в каталоге, а затем удаляет соединение - OOPS. Вместо этого используйте `mklink / D src tgt`. Lawrence Dol 11 лет назад 3
0
David d C e Freitas

This might sound weird, but check that the file or folder doesn't already exist that you are trying to create. Sometimes it's easy to overlook in the cmd prompt.

0
Zequez

Для каталогов вы должны сделать:

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