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?

prosseek
la source

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\
rpattabi
la source
@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.

prosseek
la source
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.

rburte
la source
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.

Lawrence Dol
la source
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

Sascha
la source
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.

Peter Joles
la source
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.

Martin Wildam
la source
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 ...

Simons0n
la source
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.

David d C e Freitas
la source
0

Pour les répertoires, vous devez faire:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Zequez
la source