Erreur d'accès refusé, lorsque je mklink sur Windows 7 [dupliquer]


34

Cette question a déjà une réponse ici:

Mon répertoire personnel est c: \ Users \ phi en tant qu'utilisateur phi, et j'ai créé un répertoire dans c: \ Users \ abc. J'ai besoin d'un lien symbolique de c: \ Users \ phi \ hello vers c: \ Users \ abc \ hello.

J'exécute la commande suivante

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

Mais j'obtiens l' erreur Accès refusé . L'utilisateur phi est administrateur, donc je n'ai aucun problème à écrire des fichiers dans c: \ Users \ abc.

Pourquoi est-ce? Comment mklink?

Réponses:


28

Les points importants:

  1. Vous devez exécuter en tant qu'administrateur si l'UAC est activé. (ou au moins politique de sécurité pour permettre la création de liens).
  2. Le /Dcommutateur doit être utilisé si le lien est pour le répertoire.
  3. Le premier paramètre est un lien, le deuxième paramètre est le dossier d'origine.
  4. Le lien ne devrait pas déjà exister.

Usage:

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

@LawrenceDol Est-il juste de dire que pour les utilisateurs non administrateurs, vous avez besoin de l'autorisation spéciale ( SeCreateSymbolicLinkPrivilege), tandis que pour les utilisateurs administrateurs, vous devez élever avec run-as-admin. Mais est-il possible de définir également SeCreateSymbolicLinkPrivilegeun utilisateur administrateur et d'éviter d'avoir à élever avec run-as-admin? Cette question: stackoverflow.com/questions/29956470/… indique que pour que les administrateurs ne doivent pas élever, l'UAC doit être désactivé.
CMCDragonkai

@CMCDragonkai: Je ne pense pas que l'élévation soit nécessaire, mais je n'ai pas spécifiquement testé cela. Il me semble que j'ai déjà créé des liens en utilisant un compte administrateur dans une fenêtre de commande normale et je laisse toujours UAC activé.
Lawrence Dol

25

J'ai trouvé une réponse sur ce site . En bref, j'aurais dû exécuter cmd.exe en tant qu'administrateur.


4
Pour référence, cela peut également être une cause: superuser.com/questions/264181/…
Wouter

9
Si vous essayez d'utiliser le paramètre / H lorsque vous liez des dossiers, vous obtiendrez l'accès est refusé. Vous devez utiliser / D seul pour les dossiers. C'est ce qui est contenu dans le lien de Wouter. +1 à Wouter, merci mec! :)
CausingUnderflowsEverywhere

21

Notez que la même erreur sera présentée lorsque vous essayez de créer des jonctions sur des lecteurs mappés . Je me tirais les cheveux jusqu'à ce que je tombe sur les exemples de cette page sur MSDN Hard Links and Junctions .

Réponse courte: vous ne pouvez utiliser mklink que sur des volumes locaux.


ce lien n'est pas très utile. (jeu de mots involontaire)
rpattabi

Cette réponse ne semble pas pertinente pour la question.
kreemoweet

2
@kreemoweet la réponse est pertinente car si vous obtenez une erreur "Accès refusé, lorsque je mklink sur Windows 7", la raison peut être que vous n'utilisez pas la commande sur un volume local.
Reg Edit

Oui, vous pouvez utiliser mklinkau-delà des volumes locaux. mklink /d link_name \\server\sharefonctionne très bien.
UnclickableCharacter

Vous ne pouvez pas les créer sur un lecteur mappé . Disque local -> À distance? Ouaip.
Fêtez

15

Dans Windows 7 (et versions ultérieures), vous avez besoin d'un privilège de sécurité spécial pour créer des liens et des jonctions. En tant qu'administrateur, vous pouvez accorder cette autorisation aux utilisateurs qui utilisent secpol.mscpour définir Local Policies\User Rights Assignment\Create symbolic links.

Si l'utilisateur est connecté à ce moment-là, il devra se déconnecter puis se reconnecter pour pouvoir créer des liens.

Notez la prudence que les liens peuvent exposer les faiblesses de sécurité dans certaines applications - je n'ai pas recherché quelles pourraient être ces faiblesses.


C'est la seule réponse éligible à ce problème car aucune réponse ne se résume à l'essentiel. Arrêtez de travailler en tant qu'administrateur! Il s'agit d'une attitude très XP-ish démontrant un manque de sensibilisation aux risques de sécurité pour Windows.
Thomas Urban

9

Si vous utilisez fréquemment Linux, n'oubliez pas que les paramètres sont échangés sous Windows.

Si vous utilisez la mauvaise commande, vous obtiendrez également un "Accès refusé". Parce que vous essayez de créer un lien symbolique où l'original existe déjà.

Les fenêtres: mklink /D link original

Linux: ln -s original link


4

J'obtenais ceci parce que j'ai accidentellement couru mklink /Dcontre un fichier. Le lien ne s'affichait pas dans l'explorateur, mais il l'a fait dans l'explorateur Windows. À l'aide de l'invite de commandes, j'ai supprimé le lien de répertoire non valide d'origine, puis je l'ai recréé sans l' /Doption.

Soit dit en passant, j'obtenais l'erreur «Accès refusé» même si j'exécutais cmd.exe en tant qu'administrateur.


1

Outre l'exécution en mklinktant qu'administrateur, vous devez également vous assurer que vous disposez des autorisations suffisantes pour le dossier de destination auquel vous vous connectez.


1

Si vous exécutez:

mklink / j C: \ path_to_link C: \ destination

ça devrait marcher. Dans mon cas, powershell et cmd ont produit la même sortie. Pour PowerShell, il vous suffit de démarrer la commande avec

cmd / c mklink ...


3
Oui, mais attention : les jonctions sont bien plus mortelles que les liens de répertoire physiques. La suppression d'un lien de la ligne de commande ou de l'explorateur supprime simplement le lien, mais la suppression d'une jonction de l'explorateur supprime tout dans le répertoire, puis supprime la jonction - OOPS. Utilisez mklink /D src tgtplutôt.
Lawrence Dol

0

Cela peut sembler étrange, mais vérifiez que le fichier ou le dossier n'existe pas déjà que vous essayez de créer. Parfois, il est facile d'oublier dans l'invite cmd.


0

Pour les répertoires, vous devez faire:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.