Błąd odmowy dostępu, gdy mklinkuję w systemie Windows 7 [duplikat]


34

To pytanie ma już odpowiedź tutaj:

Mój katalog domowy to c: \ Users \ phi jako phi użytkownika, a ja utworzyłem katalog na c: \ Users \ abc. Potrzebuję dowiązania symbolicznego z c: \ Users \ phi \ hello do c: \ Users \ abc \ hello.

Uruchomię następujące polecenie

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

Ale dostaję błąd odmowy dostępu . Użytkownik phi jest administratorem, więc nie mam problemu z zapisywaniem plików w folderze c: \ Users \ abc.

Dlaczego to? Jak mklinkować?

Odpowiedzi:


28

Ważne punkty:

  1. Musisz uruchomić jako administrator, jeśli UAC jest włączony. (lub przynajmniej polityka bezpieczeństwa, aby umożliwić tworzenie łączy).
  2. /DPrzełącznik musi być używany, jeśli link jest do katalogu.
  3. Pierwszy parametr to link, drugi parametr to oryginalny folder.
  4. Link nie powinien już istnieć.

Stosowanie:

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

@LawrenceDol Czy słuszne jest stwierdzenie, że w przypadku użytkowników niebędących administratorami potrzebne jest specjalne pozwolenie ( SeCreateSymbolicLinkPrivilege), podczas gdy w przypadku użytkowników administracyjnych należy je podwyższyć za pomocą polecenia „uruchom jako administrator”. Ale czy można również ustawić SeCreateSymbolicLinkPrivilegeadministratora i uniknąć podwyższenia poziomu z poziomu uruchomienia jako administrator? To pytanie: stackoverflow.com/questions/29956470/... wskazuje, że aby użytkownicy administracyjni nie musieli podwyższać poziomu, Kontrola konta użytkownika musi być wyłączona.
CMCDragonkai

@CMCDragonkai: Nie sądzę, że podniesienie jest konieczne, ale nie przetestowałem tego specjalnie. Wydaje mi się, że wcześniej tworzyłem linki za pomocą konta administratora w normalnym oknie poleceń i zawsze zostawiam UAC włączony.
Lawrence Dol


21

Pamiętaj, że ten sam błąd zostanie wyświetlony podczas próby utworzenia skrzyżowań na mapowanych dyskach . Ciągnąłem za to włosy, dopóki nie natknąłem się na przykłady na tej stronie w witrynie MSDN Hard Links and Junctions .

Krótka odpowiedź: mklink można używać tylko w lokalnych woluminach.


ten link nie jest zbyt przydatny. (pun niezamierzony)
rpattabi

Ta odpowiedź wydaje się nie mieć związku z pytaniem.
kreemoweet

2
@kreemoweet odpowiedź jest istotna, ponieważ jeśli pojawi się komunikat „Błąd odmowy dostępu, gdy mklinkuję w systemie Windows 7”, przyczyną może być to, że nie używasz polecenia na woluminie lokalnym.
Reg Edit

Tak, możesz używać mklinkpoza woluminami lokalnymi. mklink /d link_name \\server\sharedziała dobrze.
UnclickableCharacter

Nie można zrobić je na na zmapowany dysk . Dysk lokalny -> Zdalny? Tak.
Baw się

15

W systemie Windows 7 (i nowszych) potrzebujesz specjalnych uprawnień bezpieczeństwa do tworzenia łączy i skrzyżowań. Jako administrator możesz udzielić tego uprawnienia użytkownikom używającym secpol.mscdo ustawiania Local Policies\User Rights Assignment\Create symbolic links.

Jeśli użytkownik jest zalogowany w tym czasie, będzie musiał się wylogować i zalogować ponownie, aby móc utworzyć łącza.

Zwróć uwagę, że linki mogą ujawniać słabości zabezpieczeń w niektórych aplikacjach - nie badałem, jakie mogą być te słabości.


Jest to jedyna kwalifikująca się odpowiedź na ten problem, ponieważ żadna odpowiedź nie sprowadza się do drobiazgowości. Przestań działać jako administrator! Jest to postawa bardzo XP, pokazująca brak świadomości zagrożeń bezpieczeństwa, z jakimi każdy Windows jest często narażony.
Thomas Urban

9

Jeśli często korzystasz z systemu Linux, pamiętaj, że parametry są zamieniane w systemie Windows.

Jeśli użyjesz niewłaściwej kolejności, otrzymasz również komunikat „Odmowa dostępu”. Ponieważ próbujesz utworzyć dowiązanie symboliczne, w którym oryginał już istnieje.

Windows: mklink /D link original

Linux: ln -s original link


4

Otrzymywałem to, ponieważ przypadkowo natrafiłem mklink /Dna plik. Link nie był wyświetlany w Eksploratorze, ale pojawił się w Eksploratorze Windows. Za pomocą wiersza polecenia usunąłem oryginalny niepoprawny link do katalogu, a następnie odtworzyłem go bez /Dopcji.

Nawiasem mówiąc, otrzymywałem błąd „Odmowa dostępu”, mimo że uruchomiłem cmd.exe jako administrator.


1

Oprócz działania mklinkjako Administrator powinieneś również upewnić się, że masz wystarczające uprawnienia do folderu docelowego, z którym się łączysz.


1

Jeśli uruchomisz:

mklink / j C: \ path_to_link C: \ destination

powinno działać. W moim przypadku PowerShell i cmd dały takie same wyniki. W przypadku programu Power Shell wystarczy uruchomić polecenie

cmd / c mklink ...


3
Tak, ale uwaga : skrzyżowania są znacznie bardziej zabójcze niż twarde linki do katalogów. Usunięcie łącza z wiersza polecenia lub eksploratora po prostu usuwa łącze, ale usunięcie połączenia z eksploratora usuwa wszystko w katalogu, a następnie usuwa połączenie - OOPS. Użyj mklink /D src tgtzamiast tego.
Lawrence Dol

0

Może to zabrzmieć dziwnie, ale sprawdź, czy plik lub folder już nie istnieje, który próbujesz utworzyć. Czasami łatwo jest przeoczyć w wierszu polecenia cmd.


0

W przypadku katalogów musisz zrobić:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.