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.
Je lance la commande suivante
mklink c:\Utilisateurs\abc\bonjour c:\Utilisateurs\phi\bonjour
Mais je reçois l'erreur . L'accès est refusé . L'utilisateur phi est administrateur, je n'ai donc aucun problème à écrire des fichiers dans c:\Users\abc.
Pourquoi est-ce? Comment mklink?
Les points importants:
/D
doit être utilisé si le lien concerne un répertoire.Usage:
mklink /D c:\users\me\new_link\ c:\users\me\original_folder\
Notez que la même erreur sera présentée lorsque vous essayez de créer des jonctions sur lecteurs mappés. Je tirais mes cheveux là-dessus jusqu'à ce que je tombe sur les exemples de cette page sur MSDN Liens durs et jonctions .
Réponse courte: vous ne pouvez utiliser mklink que sur des volumes locaux.
Sous Windows 7 (et versions ultérieures), vous devez disposer 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 utilisant secpol.msc
pour 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 mise en garde que les liens peuvent exposer des faiblesses de sécurité dans certaines applications - je n'ai pas recherché ce que ces faiblesses pourraient être.
Si vous utilisez fréquemment Linux, n'oubliez pas que les paramètres sont échangés sous Windows.
Si vous utilisez le mauvais ordre, vous obtiendrez également un "Accès refusé". Parce que vous essayez de créer un lien symbolique là où l'original existe déjà.
Windows: mklink /D link original
Linux: ln -s original link
J'obtenais ceci parce que j'ai accidentellement couru mklink /D
sur un fichier. Le lien n'apparaissait pas dans l'explorateur, mais dans l'explorateur Windows. À l'aide de l'invite de commande, j'ai supprimé le lien de répertoire d'origine non valide, puis je l'ai recréé sans l'option /D
.
En passant, je recevais l'erreur "Accès refusé" alors que j'exécutais cmd.exe en tant qu'administrateur.
Outre l'exécution de mklink
en tant qu'administrateur, vous devez également vous assurer que vous disposez des autorisations nécessaires pour le dossier de destination auquel vous vous connectez.
Si vous courez:
mklink/j C:\path_to_link C:\destination
ça devrait marcher. Dans mon cas, powershell et cmd ont produit le même résultat. Pour Powershell, il suffit de lancer la commande avec
cmd/c mklink ...
Pour les annuaires, vous devez faire:
mklink /D c:\Users\abc\hello c:\Users\phi\hello
Cela peut sembler étrange, mais vérifiez que le fichier ou le dossier que vous essayez de créer n'existe pas déjà. Parfois, il est facile de passer inaperçu dans l'invite cmd.