Перейти к содержимому

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

30

Мой домашний каталог - 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.

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

87 882 просмотра
prosseek спросил 15 лет назад
P 2 277

10 ответов

24
Принятый ответ

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

Для справки, это также может быть причиной: http://superuser.com/questions/264181/using-mklink-h-results-in-access-is-denied

Wouter · 10 лет назад · 4

Если вы попытаетесь использовать параметр / H при связывании папок, вы получите доступ запрещен. Вам нужно использовать / D один для папок. Это то, что содержится в ссылке Wouter. +1 к Вутеру, спасибо дружище! :)

CausingUnderflowsEverywhere · 9 лет назад · 5
prosseek ответил 15 лет назад
P 2 277
22

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 · 9 лет назад · 0

@CMCDragonkai: Я не думаю, что повышение необходимо, но я специально не проверял это. Мне кажется, что я создал ссылки, используя учетную запись администратора в обычном командном окне, и всегда оставляю UAC включенным.

Lawrence Dol · 9 лет назад · 0
rpattabi ответил 13 лет назад
R 478
21

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

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

эта ссылка не очень полезна. (каламбур непреднамеренный)

rpattabi · 13 лет назад · 0

Этот ответ не имеет отношения к вопросу.

kreemoweet · 13 лет назад · 0

@kreemoweet ответ уместен, потому что если вы получаете сообщение «Ошибка доступа запрещена, когда я запускаю ссылку на Windows 7», возможно, причина в том, что вы не используете команду на локальном томе.

Reg Edit · 9 лет назад · 2
rburte ответил 14 лет назад
R 465
13

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

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

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

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

cepharum · 9 лет назад · 0
Lawrence Dol ответил 13 лет назад
L 1 392
9

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

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

Окна: mklink /D link original

Linux: ln -s original link

Sascha ответил 12 лет назад
S 789
4

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

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

Peter Joles ответил 15 лет назад
P 41
1

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

Martin Wildam ответил 14 лет назад
M 19
1

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

mklink / j C: \ path_to_link C: \ destination

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

cmd / c mklink ...

Да, но ** будьте осторожны **: соединения гораздо более смертоносны, чем жесткие ссылки на каталоги. Удаление ссылки из командной строки или проводника просто удаляет ссылку, но удаление соединения из проводника удаляет все в каталоге, а затем удаляет соединение - OOPS. Вместо этого используйте mklink / D src tgt.

Lawrence Dol · 13 лет назад · 3
Simons0n ответил 13 лет назад
S 132
0

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.

David d C e Freitas ответил 15 лет назад
D 2 713
0

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

mklink /D c:\Users\abc\hello c:\Users\phi\hello 
Zequez ответил 14 лет назад
Z 1 177