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ć?

prosseek
źródło

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\
rpattabi
źródło
@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
25

Znalazłem odpowiedź z tej strony . Krótko mówiąc, powinienem był uruchomić cmd.exe jako Administrator.

prosseek
źródło
4
Dla odniesienia może to być również przyczyna: superuser.com/questions/264181/...
Wouter
9
Jeśli spróbujesz użyć parametru / H podczas łączenia folderów, dostaniesz Odmowa dostępu. Potrzebujesz tylko / D do folderów. To jest zawarte w łączu Woutera. +1 do Woutera, dzięki kolego! :)
CausingUnderflowsEverywhere
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.

rburte
źródło
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.

Lawrence Dol
źródło
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

Sascha
źródło
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.

Peter Joles
źródło
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.

Martin Wildam
źródło
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 ...

Simons0n
źródło
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.

David d C e Freitas
źródło
0

W przypadku katalogów musisz zrobić:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Zequez
źródło