Errore di accesso negato, quando mklink su Windows 7 [duplicato]


34

Questa domanda ha già una risposta qui:

La mia directory home è c: \ Users \ phi come phi utente e ho creato una directory in c: \ Users \ abc. Ho bisogno di un collegamento simbolico da c: \ Users \ phi \ ciao a c: \ Users \ abc \ ciao.

Eseguo il seguente comando

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

Ma ottengo l' errore Accesso negato . L'utente phi è amministratore, quindi non ho problemi a scrivere file in c: \ Users \ abc.

Perchè è questo? Come mklink?

Risposte:


28

Punti importanti:

  1. È necessario eseguire come amministratore se UAC è attivo. (o almeno politica di sicurezza per consentire la creazione di collegamenti).
  2. Lo /Dswitch deve essere utilizzato se il collegamento è per la directory.
  3. Il primo parametro è un collegamento, il secondo parametro è la cartella originale.
  4. Il link non dovrebbe già esistere.

Uso:

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

@LawrenceDol È giusto dire che per gli utenti non amministratori è necessaria l'autorizzazione speciale ( SeCreateSymbolicLinkPrivilege), mentre per gli utenti amministratori è necessario elevarsi con run-as-admin. Ma allora è anche possibile impostare SeCreateSymbolicLinkPrivilegeun utente admin ed evitare di elevarsi con run-as-admin? Questa domanda: stackoverflow.com/questions/29956470/… indica che per gli utenti admin non è necessario elevare, UAC deve essere disabilitato.
CMCDragonkai,

@CMCDragonkai: non penso che l'elevazione sia necessaria, ma non l'ho testata in modo specifico. Mi sembra di aver già creato dei collegamenti utilizzando un account amministratore in una normale finestra di comando e di lasciare sempre il controllo account utente attivo.
Lawrence Dol,

25

Ho trovato una risposta da questo sito . In breve, avrei dovuto eseguire cmd.exe come amministratore.


4
Per riferimento, questo può anche essere una causa: superuser.com/questions/264181/…
Wouter,

9
Se si tenta di utilizzare il parametro / H quando si collegano le cartelle, verrà visualizzato Accesso negato. È necessario utilizzare / D da solo per le cartelle. Questo è ciò che è contenuto nel link di Wouter. +1 a Wouter, grazie amico! :)
CausingUnderflowsEwherewhere

21

Si noti che lo stesso errore verrà visualizzato quando si tenta di creare giunzioni su unità mappate . Mi stavo togliendo i capelli fino a quando non mi sono imbattuto negli esempi di questa pagina su MSDN Hard Links and Junctions .

Risposta breve: puoi usare mklink solo su volumi locali.


questo link non è molto utile. (gioco di
parole

Questa risposta non sembra pertinente alla domanda.
kreemoweet

2
@kreemoweet la risposta è rilevante perché se viene visualizzato l'errore "Accesso negato, quando mklink su Windows 7", il motivo potrebbe essere che non si sta utilizzando il comando su un volume locale.
Modifica Reg

Sì, è possibile utilizzare mklinkoltre i volumi locali. mklink /d link_name \\server\sharefunziona benissimo.
UnclickableCharacter

Non puoi crearli su un'unità mappata . Disco locale -> Remoto? Sì.
Fai

15

In Windows 7 (e versioni successive) è necessario un privilegio di sicurezza speciale per creare collegamenti e giunzioni. Come amministratore puoi concedere questa autorizzazione agli utenti che utilizzano secpol.mscper impostare Local Policies\User Rights Assignment\Create symbolic links.

Se l'utente ha effettuato l'accesso in quel momento, dovrà disconnettersi e riconnettersi per poter creare collegamenti.

Nota che i collegamenti possono esporre i punti deboli di sicurezza in alcune app: non ho studiato quali potrebbero essere tali punti deboli.


Questa è l'unica risposta ammissibile a questo problema per qualsiasi risposta che non si riduce al grintoso. Smetti di lavorare come amministratore! Questo è un atteggiamento molto simile a quello di XP che dimostra la mancanza di consapevolezza dei rischi per la sicurezza a cui Windows è soggetto molto.
Thomas Urban

9

Se usi frequentemente Linux, ricorda che i parametri vengono scambiati su Windows.

Se usi un ordine sbagliato, otterrai anche un "Accesso negato". Perché stai cercando di creare un collegamento simbolico in cui l'originale esiste già.

Finestre: mklink /D link original

Linux: ln -s original link


4

Lo stavo ottenendo perché mi sono imbattuto accidentalmente in mklink /Dun file. Il link non veniva visualizzato in Explorer ma in Esplora risorse. Utilizzando il Prompt dei comandi ho eliminato il collegamento alla directory non valida originale e quindi ricreato senza l' /Dopzione.

A proposito, stavo ottenendo l'errore "Accesso negato" anche se stavo eseguendo cmd.exe come amministratore.


1

Oltre a funzionare mklinkcome amministratore, dovresti anche assicurarti di disporre di autorizzazioni sufficienti per la cartella di destinazione a cui ti stai collegando.


1

Se corri:

mklink / j C: \ path_to_link C: \ destination

dovrebbe funzionare. Nel mio caso, powershell e cmd hanno prodotto lo stesso output. Per PowerShell devi solo avviare il comando con

cmd / c mklink ...


3
Sì, ma attenzione : le giunzioni sono molto più mortali dei collegamenti a directory rigide. L'eliminazione di un collegamento dalla riga di comando o di Explorer rimuove semplicemente il collegamento, ma l'eliminazione di un nodo da Explorer rimuove tutto nella directory e quindi elimina il nodo - OOPS. Usa mklink /D src tgtinvece.
Lawrence Dol,

0

Potrebbe sembrare strano, ma controlla che il file o la cartella non esistano già che stai tentando di creare. A volte è facile trascurare nel prompt cmd.


0

Per le directory devi fare:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.