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.

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

10 ответов10

25

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

22

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

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

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

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

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

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

13

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

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

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

9

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

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

Windows: mklink /D link original

Linux: ln -s original link

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 ...

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .