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?

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\

@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.


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.


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.


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


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.


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.


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 ...


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.


0

Para los directorios que tienes que hacer:

mklink /D c:\Users\abc\hello c:\Users\phi\hello
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.