Помилка доступу в доступі, коли я переключаюсь на Windows 7 [дублікат]


34

На це питання вже є відповідь тут:

Мій домашній каталог c: \ Users \ phi як користувач phi, і я створив каталог у c: \ Users \ abc. Мені потрібно символічне посилання від c: \ Users \ phi \ hello to c: \ Users \ abc \ hello.

Я виконую наступну команду

mklink c: \ Користувачі \ abc \ hello c: \ Користувачі \ phi \ hello

Але я отримую, що в доступі заборонено помилку. Користувач phi є адміністратором, тому у мене немає проблем із записом файлів c: \ Users \ abc.

Чому це? Як mklink?

Відповіді:


28

Важливі моменти:

  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 увімкненим.
Лоуренс Дол

25

Я знайшов відповідь з цього сайту . Словом, я мав би запустити cmd.exe як адміністратор.


4
Для довідки, це також може бути причиною: superuser.com/questions/264181/…
Wouter

9
Якщо ви спробуєте використати параметр / H під час з'єднання папок, ви отримаєте доступ заборонено. Для папок вам потрібно використовувати / D тільки. Про це міститься у посиланні Вутера. +1 Wouter, дякую товаришу! :)
ПричиняєПотокиПотоки

21

Зауважте, що така ж помилка буде подана під час спроби створити з'єднання на відображених накопичувачах . Я витягував волосся на цьому, поки не натрапив на приклади цієї сторінки на жорстких посиланнях та з'єднаннях MSDN .

Коротка відповідь: ви можете використовувати mklink лише в локальних томах.


це посилання не дуже корисне. (каламбур ненавмисне)
rpattabi

Ця відповідь не видається відповідною до питання.
kreemoweet

2
@kreemoweet відповідь є актуальною, оскільки якщо ви отримуєте "Помилка доступу заборонена, коли я mklink в Windows 7", причина може полягати в тому, що ви не використовуєте команду на локальному томі.
Редагування

Так, ви можете використовувати 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.

Якщо користувач увійшов у цей час, йому потрібно буде вийти з системи та знову увійти, щоб створити посилання.

Зауважте, що посилання можуть виявити недоліки безпеки в деяких додатках - я не досліджував, якими можуть бути ці слабкі місця.


Це єдина відповідна відповідь на цю проблему, оскільки будь-яка відповідь не зводиться до азотного зернистості. Перестаньте працювати адміністратором! Це дуже сприятливе ставлення до XP, що демонструє недостатню обізнаність щодо ризиків для безпеки, оскільки будь-яка Windows має велику схильність.
Томас Урбан

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: \ призначення

це має працювати. У моєму випадку, powerhell та cmd дали однаковий вихід. Для повноважень вам потрібно лише запустити команду

cmd / c mklink ...


3
Так, але будьте обережні : переходи набагато смертоносніші, ніж жорсткі посилання на каталог. Видалення посилання з командного рядка або провідника просто видаляє посилання, але видалення з'єднання з провідника видаляє все в каталозі, а потім видаляє з'єднання - OOPS. Використовуйте mklink /D src tgtзамість цього.
Лоуренс Дол

0

Це може здатися дивним, але переконайтеся, що файл чи папка вже не існує, що ви намагаєтесь створити. Іноді це легко не помітити в cmd-рядку.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.