Zugriff verweigert Fehler, wenn ich unter Windows 7 mklink [duplizieren]

34

Diese Frage hat hier bereits eine Antwort:

Mein Ausgangsverzeichnis ist c: \ Users \ phi als Benutzer phi, und ich habe ein Verzeichnis unter c: \ Users \ abc erstellt. Ich muss eine symbolische Verknüpfung von c: \ Users \ phi \ hello zu c: \ Users \ abc \ hello herstellen.

Ich führe den folgenden Befehl aus

mklink c: \ Users \ abc \ hallo c: \ Users \ phi \ hallo

Aber ich bekomme den Zugriff verweigert Fehler. Benutzer phi ist Administrator, daher habe ich keine Probleme beim Schreiben von Dateien in c: \ Users \ abc.

Warum ist das? Wie geht das?

Prosseek
quelle

Antworten:

27

Wichtige Punkte:

  1. Sie müssen als Administrator ausgeführt werden, wenn die Benutzerkontensteuerung aktiviert ist. (oder zumindest Sicherheitsrichtlinien, um die Erstellung von Links zu ermöglichen).
  2. Der /DSchalter muss verwendet werden, wenn der Link für das Verzeichnis ist.
  3. Der erste Parameter ist eine Verknüpfung, der zweite Parameter ist der ursprüngliche Ordner.
  4. Der Link sollte noch nicht existieren.

Verwendung:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\
rpattabi
quelle
@LawrenceDol Ist es richtig zu sagen, dass Sie für Benutzer ohne Administratorrechte die spezielle Berechtigung ( SeCreateSymbolicLinkPrivilege) benötigen , während Sie für Benutzer mit Administratorrechten die Berechtigung " run-as-admin" erhöhen müssen. Aber ist es dann möglich, auch SeCreateSymbolicLinkPrivilegeeinen Admin-Benutzer einzurichten und zu vermeiden, mit run-as-admin zu erhöhen? Diese Frage: stackoverflow.com/questions/29956470/… gibt an, dass die Benutzerkontensteuerung deaktiviert sein muss, damit Administratorbenutzer sie nicht erhöhen müssen.
CMCDragonkai
@CMCDragonkai: Ich denke nicht, dass eine Erhöhung notwendig ist, aber ich habe das nicht speziell getestet. Es scheint mir, dass ich Links mit einem Administratorkonto in einem normalen Befehlsfenster erstellt habe und die Benutzerkontensteuerung immer aktiviert habe.
Lawrence Dol
25

Ich habe eine Antwort von dieser Seite gefunden . Kurz gesagt, ich hätte cmd.exe als Administrator ausführen sollen.

Prosseek
quelle
4
Als Referenz kann dies auch eine Ursache sein: superuser.com/questions/264181/…
Wouter
9
Wenn Sie versuchen, beim Verknüpfen von Ordnern den Parameter / H zu verwenden, wird der Zugriff verweigert. Sie müssen / D alleine für Ordner verwenden. Dies ist, was in Wouters Link enthalten ist. +1 an Wouter, danke Kumpel! :)
CausingUnderflowsEverywhere
21

Beachten Sie, dass der gleiche Fehler angezeigt wird, wenn Sie versuchen, Junctions auf zugeordneten Laufwerken zu erstellen . Ich habe mir die Haare herausgerissen, bis ich auf die Beispiele auf dieser Seite zu MSDN Hard Links and Junctions gestoßen bin .

Kurze Antwort: Sie können mklink nur auf lokalen Volumes verwenden.

rburte
quelle
Dieser Link ist nicht sehr nützlich. (Wortspiel unbeabsichtigt)
rpattabi
Diese Antwort scheint für die Frage nicht relevant zu sein.
Kreemoweet
2
@kreemoweet Die Antwort ist relevant, da der Grund dafür, dass Sie den Befehl nicht auf einem lokalen Volume verwenden, wenn der Fehler "Zugriff verweigert wird, wenn ich auf Windows 7 einen Link erzeuge" auftritt.
Reg Edit
Ja, Sie können mklinküber lokale Volumes hinaus verwenden. mklink /d link_name \\server\sharefunktioniert gut
UnclickableCharacter
Sie können sie nicht auf einem zugeordneten Laufwerk erstellen . Lokale Festplatte -> Remote? Jep.
Feiern
15

In Windows 7 (und höher) benötigen Sie ein spezielles Sicherheitsrecht, um Links und Junctions zu erstellen. Verwendung Als Administrator können Sie diese Berechtigung Benutzern gewähren secpol.msczu setzen Local Policies\User Rights Assignment\Create symbolic links.

Wenn der Benutzer zu diesem Zeitpunkt angemeldet ist, muss er sich abmelden und wieder anmelden, um Links erstellen zu können.

Beachten Sie, dass Links in einigen Apps Sicherheitslücken aufweisen können. Ich habe nicht untersucht, wie diese Lücken aussehen könnten.

Lawrence Dol
quelle
Dies ist die einzig in Frage kommende Antwort auf dieses Problem, wenn eine Antwort nicht auf den Punkt gebracht wird. Arbeitet nicht länger als Administrator! Dies ist eine sehr XP-artige Einstellung, die das mangelnde Bewusstsein für Sicherheitsrisiken zeigt, denen Windows häufig ausgesetzt ist.
Thomas Urban
9

Wenn Sie häufig mit Linux arbeiten, denken Sie daran, dass die Parameter unter Windows ausgetauscht werden.

Wenn Sie die falsche Reihenfolge verwenden, erhalten Sie ebenfalls die Meldung "Zugriff verweigert". Weil Sie versuchen, eine symbolische Verknüpfung zu erstellen, in der das Original bereits vorhanden ist.

Windows: mklink /D link original

Linux: ln -s original link

Sascha
quelle
4

Ich bekam das, weil ich versehentlich mklink /Dgegen eine Datei lief. Der Link wurde im Explorer nicht angezeigt, aber im Windows Explorer. Über die Eingabeaufforderung habe ich die ursprüngliche ungültige Verzeichnisverknüpfung gelöscht und anschließend ohne die /DOption neu erstellt.

Ich habe übrigens den Fehler "Zugriff verweigert" erhalten, obwohl ich cmd.exe als Administrator ausgeführt habe.

Peter Joles
quelle
1

Neben der Ausführung mklinkals Administrator sollten Sie auch sicherstellen, dass Sie über ausreichende Berechtigungen für den Zielordner verfügen, zu dem Sie eine Verknüpfung herstellen.

Martin Wildam
quelle
1

Wenn du läufst:

mklink / j C: \ path_to_link C: \ destination

es sollte funktionieren. In meinem Fall haben Powershell und Cmd die gleiche Ausgabe erzeugt. Für Powershell müssen Sie den Befehl nur mit starten

cmd / c mklink ...

Simons0n
quelle
3
Ja, aber Vorsicht : Junctions sind weitaus tödlicher als harte Verzeichnisverknüpfungen. Durch das Löschen eines Links aus der Befehlszeile oder dem Explorer wird der Link einfach entfernt, durch das Löschen einer Junction aus dem Explorer wird jedoch alles im Verzeichnis entfernt und anschließend die Junction - OOPS gelöscht. Verwenden Sie mklink /D src tgtstattdessen.
Lawrence Dol
0

Dies mag seltsam klingen, prüfen Sie jedoch, ob die Datei oder der Ordner, die bzw. den Sie erstellen möchten, noch nicht vorhanden ist. Manchmal ist es einfach, in der Eingabeaufforderung cmd zu übersehen.

David d C e Freitas
quelle
0

Für Verzeichnisse müssen Sie Folgendes tun:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Zequez
quelle