¿Cómo puedo crear enlaces simbólicos en Windows 8.1 sin un símbolo del sistema de administrador?

8

Espero que alguien pueda corregirme cuando me equivoco al intentar crear un enlace simbólico en Windows 8.1 sin tener que ejecutar cmd.exe como administrador.

Cada vez que intento crear un enlace simbólico desde un símbolo del sistema normal, obtengo la respuesta de permisos habitual ...

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
You do not have sufficient privilege to perform this operation.

... y funciona desde un símbolo del sistema de administración (como se esperaba) ...

C:\Users\MyUser>mklink symlink.txt mytextfile.txt
symbolic link created for symlink.txt <<===>> mytextfile.txt

Sin embargo, no parece que ninguna de las soluciones habituales funcione en Windows 8.1 (al menos, las soluciones que pude encontrar).

He intentado seguir la respuesta a ¿Cómo creo un enlace en Windows 7 Home Premium como usuario habitual? , pero parece no tener efecto.

También tengo UAC configurado en su nivel más bajo.

¿Hay algo más que me estoy perdiendo?

Karl Nicoll
fuente
2
Es culpa de UAC. Vea la respuesta de "Paul Betts" aquí: stackoverflow.com/questions/15320550/…
StackzOfZtuff
@StackzOfZtuff - Bueno, eso es molesto. Gracias por el enlace, parece que voy a tener que elegir entre UAC y ninguna aplicación de Metro. Creo que nunca entenderé lo que Microsoft estaba tratando de hacer con UAC.
Karl Nicoll

Respuestas:

9

Falta el privilegio en el token "filtrado"

Deshabilite UAC. O con UAC habilitado: después de habilitar SECreateSymbolicLinkPrivilegeintente con una cuenta que no sea de administrador .

Explicación
Es la captura 17. De cómo leí la documentación de MS.

Si tiene un grupo de administración conocido en la lista negra en su cuenta de usuario, se crea un segundo token no elevado.

Lo relevante SeCreateSymbolicLinkPrivilegese filtra cuando el token no elevado se genera a partir del token elevado.

Desde MSDN: Aislamiento de privilegios de interfaz de usuario (UIPI) :

Windows creará dos tokens de acceso para el usuario si se cumple alguna de las siguientes condiciones: La cuenta del usuario contiene cualquiera de los siguientes RID.
DOMAIN_GROUP_RID_ADMINS
[...] Los
privilegios que contiene el token filtrado se basan en si el token original contenía alguno de los RIDS restringidos enumerados anteriormente. Si alguno de los RID restringidos estaba en el token, se eliminan todos los privilegios excepto:
SeChangeNotifyPrivilege
SeShutdownPrivilege
SeUndockPrivilege
SeReserveProcessorPrivilege
SeTimeZonePrivilege

Entonces, la solución es desactivar por completo la segunda generación de tokens. Eliminando todos los grupos mencionados de su cuenta o deshabilitando completamente UAC.

(Descargo de responsabilidad: Paul Betts hizo el trabajo. Acabo de agregar algunos detalles. Vea su respuesta aquí: /programming/15320550/secreatesymboliclinkprivilege-ignored-on-windows-8 )

StackzOfZtuff
fuente