В доступе отказано ошибка, когда я mklink на Windows 7 [дубликат]

34

На этот вопрос уже есть ответ здесь:

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

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

prosseek
источник

Ответы:

28

Важные моменты:

  1. Вам нужно работать от имени администратора, если UAC включен. (или, по крайней мере, политика безопасности, позволяющая создавать ссылки).
  2. /DПереключатель должен быть использован , если ссылка на каталог.
  3. Первый параметр - это ссылка, второй параметр - исходная папка.
  4. Ссылка не должна существовать уже.

Использование:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\
rpattabi
источник
@LawrenceDol Правильно ли говорить, что для пользователей, не являющихся администраторами, вам нужно специальное разрешение ( SeCreateSymbolicLinkPrivilege), а для пользователей-администраторов - повышение уровня с помощью run-as-admin. Но тогда возможно ли установить SeCreateSymbolicLinkPrivilegeадминистратора-пользователя и избежать повышения с помощью run-as-admin? Этот вопрос: stackoverflow.com/questions/29956470/… указывает, что для административных пользователей не нужно повышать, UAC должен быть отключен.
CMCDragonkai
@CMCDragonkai: Я не думаю, что повышение необходимо, но я специально не проверял это. Мне кажется, что я создал ссылки, используя учетную запись администратора в обычном командном окне, и всегда оставляю UAC включенным.
Лоуренс Дол
25

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

prosseek
источник
4
Для справки, это также может быть причиной: superuser.com/questions/264181/…
Wouter
9
Если вы попытаетесь использовать параметр / H при связывании папок, вы получите доступ запрещен. Вам нужно использовать / D один для папок. Это то, что содержится в ссылке Wouter. +1 к Вутеру, спасибо дружище! :)
CausingUnderflowsEverywhere
21

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

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

rburte
источник
эта ссылка не очень полезна. (каламбур непреднамеренный)
rpattabi
Этот ответ не имеет отношения к вопросу.
kreemoweet
2
@kreemoweet ответ уместен, потому что если вы получаете сообщение «Ошибка доступа запрещена, когда я запускаю ссылку на Windows 7», возможно, причина в том, что вы не используете команду на локальном томе.
Reg Edit
Да, вы можете использовать mklinkза пределами локальных томов. mklink /d link_name \\server\shareработает просто отлично.
UnclickableCharacter
Вы не можете сделать их на подключенном диске . Локальный диск -> Удаленный? Ага. Партия , как это Netware 2.x
rburte
15

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

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

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

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

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

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

Окна: mklink /D link original

Linux: ln -s original link

Sascha
источник
4

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

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

Питер Джолс
источник
1

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

Мартин Вильдам
источник
1

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

mklink / j C: \ path_to_link C: \ destination

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

cmd / c mklink ...

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

Это может звучать странно, но убедитесь, что файл или папка не существует, который вы пытаетесь создать. Иногда это легко пропустить в командной строке cmd.

Дэвид д С е Фрейтас
источник
0

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

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Zequez
источник