Error de acceso denegado, cuando mklink en Windows 7 [duplicado]

34

Esta pregunta ya tiene una respuesta aquí:

Mi directorio personal es c: \ Users \ phi como usuario phi, y creé un directorio en c: \ Users \ abc. Necesito un enlace simbólico de c: \ Users \ phi \ hello a c: \ Users \ abc \ hello.

Ejecuto el siguiente comando

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

Pero obtengo el error de acceso denegado . El usuario phi es Administrador, por lo que no tengo problemas para escribir archivos en c: \ Users \ abc.

¿Por qué es esto? ¿Cómo mklink?

prosseek
fuente

Respuestas:

28

Puntos importantes:

  1. Debe ejecutar como administrador si UAC está activado. (o al menos una política de seguridad para permitir la creación de enlaces).
  2. El /Dinterruptor debe usarse si el enlace es para el directorio.
  3. El primer parámetro es un enlace, el segundo parámetro es la carpeta original.
  4. El enlace no debería existir ya.

Uso:

mklink /D c:\users\me\new_link\ c:\users\me\original_folder\
rpattabi
fuente
@LawrenceDol ¿Es correcto decir que para los usuarios que no son administradores, necesita un permiso especial ( SeCreateSymbolicLinkPrivilege), mientras que para los usuarios administradores necesita elevarse con run-as-admin. Pero entonces, ¿es posible configurar también SeCreateSymbolicLinkPrivilegeun usuario administrador y evitar tener que elevar con run-as-admin? Esta pregunta: stackoverflow.com/questions/29956470/… indica que para que los usuarios administradores no necesiten elevarse, UAC debe estar deshabilitado.
CMCDragonkai
@CMCDragonkai: No creo que la elevación sea necesaria, pero no lo he probado específicamente. Me parece que he creado enlaces usando una cuenta de administrador en una ventana de comando normal y siempre dejo UAC activado.
Lawrence Dol
25

Encontré una respuesta de este sitio . En resumen, debería haber ejecutado cmd.exe como administrador.

prosseek
fuente
44
Como referencia, esto también puede ser una causa: superuser.com/questions/264181/…
Wouter
99
Si intenta utilizar el parámetro / H cuando vincula carpetas, obtendrá Acceso denegado. Necesita usar / D solo para carpetas. Esto es lo que está contenido en el enlace de Wouter. ¡+1 a Wouter, gracias amigo! :)
CausingUnderflowsEverywhere
21

Tenga en cuenta que se presentará el mismo error cuando intente crear uniones en unidades asignadas . Me estaba sacando el pelo por esto hasta que me encontré con los ejemplos en esta página en MSDN Hard Links and Junctions .

Respuesta corta: solo puede usar mklink en volúmenes locales.

rburte
fuente
Este enlace no es muy útil. (juego de palabras involuntario)
rpattabi
Esta respuesta no parece relevante para la pregunta.
kreemoweet
2
@kreemoweet la respuesta es relevante porque si obtiene un "Error de acceso denegado, cuando mklink en Windows 7", la razón puede ser que no esté utilizando el comando en un volumen local.
Reg Edit
Sí, puede usar mklinkmás allá de los volúmenes locales. mklink /d link_name \\server\sharefunciona bien
UnclickableCharacter
No puedes hacerlos en un disco mapeado . Disco local -> Remoto? Sip.
Festeja
15

En Windows 7 (y versiones posteriores) necesita un privilegio de seguridad especial para crear enlaces y uniones. Como administrador, puede otorgar este permiso a los usuarios que usan secpol.mscpara configurar Local Policies\User Rights Assignment\Create symbolic links.

Si el usuario inició sesión en ese momento, deberá cerrar sesión y volver a iniciarla para poder crear enlaces.

Tenga en cuenta la precaución de que los enlaces pueden exponer las debilidades de seguridad en algunas aplicaciones; no he investigado cuáles podrían ser esas debilidades.

Lawrence Dol
fuente
Esta es la única respuesta elegible a este problema, ya que cualquier respuesta no es llegar al meollo de la cuestión. ¡Deja de trabajar como administrador! Esta es una actitud muy XP-ish que demuestra la falta de conocimiento de los riesgos de seguridad a los que se arriesga mucho Windows.
Thomas Urban
9

Si usa Linux con frecuencia, recuerde que los parámetros se intercambian en Windows.

Si usa el orden incorrecto, también obtendrá un "Acceso denegado". Porque estás intentando crear un enlace simbólico donde el original ya existe.

Ventanas: mklink /D link original

Linux: ln -s original link

Sascha
fuente
4

Estaba recibiendo esto porque accidentalmente me encontré mklink /Dcon un archivo. El enlace no se mostraba en el explorador, pero sí en el Explorador de Windows. Usando el símbolo del sistema, eliminé el enlace de directorio no válido original y luego lo recreé sin la /Dopción.

Por cierto, recibí el error "Acceso denegado" aunque estaba ejecutando cmd.exe como administrador.

Peter Joles
fuente
1

Además de ejecutarse mklinkcomo Administrador, también debe asegurarse de tener suficientes permisos para la carpeta de destino a la que está vinculando.

Martin Wildam
fuente
1

Si tu corres:

mklink / j C: \ path_to_link C: \ destination

deberia de funcionar. En mi caso, powershell y cmd produjeron el mismo resultado. Para powershell solo tienes que iniciar el comando con

cmd / c mklink ...

Simons0n
fuente
3
Sí, pero cuidado : las uniones son mucho más mortales que los enlaces de directorio rígidos. Eliminar un enlace de la línea de comandos o el explorador simplemente elimina el enlace, pero eliminar una unión del explorador elimina todo en el directorio y luego elimina la unión - OOPS. Usar en su mklink /D src tgtlugar.
Lawrence Dol
0

Esto puede sonar extraño, pero verifique que el archivo o carpeta no exista que está intentando crear. A veces es fácil pasar por alto en el indicador de cmd.

David d C e Freitas
fuente
0

Para los directorios que tienes que hacer:

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