Las unidades de red asignadas no se muestran en programas elevados
Si está utilizando unidades de red asignadas, probablemente haya notado que no se muestran en las aplicaciones que se ejecutan con privilegios de administrador (incluidos cmd y PowerShell). La configuración predeterminada de Control de cuentas de usuario (UAC) no permite acceder a unidades de red asignadas (a través de
net use) desde aplicaciones que se ejecutan en modo elevado (Ejecutar como administrador). Esto significa que cuando ejecuta el símbolo del sistema o un administrador de archivos (como Total Commander) con privilegios elevados, no mostrarán las letras de unidad de las carpetas compartidas montadas.
Puede enfrentar un problema de este tipo si se cumplen las siguientes condiciones:
Las unidades de red se asignan en la sesión del usuario (a través de GPO o manualmente a través de
net use);
-
UAC está habilitado en la computadora (el parámetro GPO Control de cuentas de usuario: Comportamiento de la solicitud de elevación para administradores en el modo de aprobación de administrador está configurado en el valor predeterminado "Solicitud de credenciales");
El usuario actual tiene permisos de administrador local en la computadora y ejecuta la aplicación en el modo "Ejecutar como administrador".
En este caso, las unidades de red se muestran en el Explorador de archivos de Windows y en las aplicaciones, pero no se muestran en ninguna aplicación que se ejecute en modo elevado.
En este artículo, mostraremos cómo permitir el acceso a las unidades de red asignadas desde las aplicaciones que se ejecutan en modo elevado en Windows 10. Este problema ocurre tanto para las unidades de red asignadas a través de la Política de grupo como para las carpetas conectadas por los usuarios.
Importante. No se recomienda enfáticamente deshabilitar UAC por completo, incluso para un programa específico.
Las unidades de red asignadas no se muestran en las aplicaciones de Windows
Verifiquemos que no puede acceder a la unidad de red asignada conectada en modo normal desde una aplicación elevada con UAC habilitado. Por ejemplo, abramos un símbolo del sistema con permisos de usuario y verifiquemos si puede acceder al contenido de la unidad de red asignada Z:\.
Net use
Dir z:El comando debe enumerar el contenido de la carpeta de red compartida.
Si abre el símbolo del sistema en la sesión actual como administrador e intenta acceder a la misma unidad, recibirá el mensaje de que no se ha encontrado la ruta a la unidad:
The system cannot find the path specified.
Este comportamiento de Windows puede causar algunos inconvenientes cuando ejecuta aplicaciones con frecuencia en modo elevado. Es posible ejecutar aplicaciones sin privilegios de administrador, pero esto no siempre es aplicable.
¿Por qué sucede? Esta peculiaridad está relacionada con el mecanismo UAC para un usuario con privilegios de administrador local. El caso es que cuando este usuario inicia sesión, se crean dos tokens de acceso: el primer token proporciona acceso con privilegios de administrador deshabilitados (el token de acceso filtrado, con el que se ejecutan la mayoría de las aplicaciones) y el segundo es el token de administrador con privilegios completos en el sistema (todas las aplicaciones aprobadas para elevación por UAC se ejecutan en este contexto).
Puedes usar
whoami /allcomando en dos sesiones de cmd.exe (normal y elevada) del mismo usuario y compare los privilegios actuales, puede ver que son muy diferentes. La siguiente tabla enumera las diferencias en los grupos de seguridad y los privilegios actuales en cada sesión.
| Normal user session | Elevated user session | |
| Security group | Mandatory Label\Medium Mandatory Level Label S-1-16-8192 | Mandatory Label\High Mandatory Level Label S-1-16-12288 |
| Privileges | SeLockMemoryPrivilege SeMachineAccountPrivilege SeShutdownPrivilege SeChangeNotifyPrivilege SeUndockPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege | SeLockMemoryPrivilege SeIncreaseQuotaPrivilege SeMachineAccountPrivilege SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege SeSystemProfilePrivilege SeSystemtimePrivilege SeProfileSingleProcessPrivilege SeIncreaseBasePriorityPrivilege SeCreatePagefilePrivilege SeBackupPrivilege SeRestorePrivilege SeShutdownPrivilege SeSystemEnvironmentPrivilege SeChangeNotifyPrivilege SeRemoteShutdownPrivilege SeUndockPrivilege SeManageVolumePrivilege SeImpersonatePrivilege SeCreateGlobalPrivilege SeIncreaseWorkingSetPrivilege SeTimeZonePrivilege SeCreateSymbolicLinkPrivilege SeDelegateSessionUserImpersonatePrivilege |
Las aplicaciones bajo el mismo usuario pueden ejecutarse en dos contextos cuando UAC está habilitado (con privilegios y sin privilegios). Cuando asigna carpetas de red compartidas, el sistema crea enlaces simbólicos (DosDevices) que almacenan la asignación de letras de unidad a las rutas UNC. Estos enlaces están asociados con el token de acceso al proceso actual y no están disponibles para otros tokens.
También puede ocurrir el problema inverso: cuando el usuario con permisos de administrador en la computadora está conectando unidades de red mediante secuencias de comandos de inicio de sesión de directiva de grupo, tareas programadas o trabajos SCCM (que se ejecutan con privilegios elevados), estas unidades no son visibles para el usuario en el Explorador de archivos (proceso sin privilegios).
Consejo. Puede usar un truco simple para ejecutar el Explorador de archivos en Windows con derechos de administrador (elevados).
Como solución alternativa, puede montar unidades de red desde el símbolo del sistema elevado usando los comandos:
net useo
rundll32 SHELL32.dll,SHHelpShortcuts_RunDLL ConnectHabilitar conexiones vinculadas: habilitar unidades asignadas en las aplicaciones elevadas
Hay una solución más fácil. Para implementarlo, debe realizar algunos cambios en el registro:
Abra el editor de registro (regedit.exe);
Vaya a la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System;
Cree un nuevo parámetro (tipo DWORD) con el nombre EnableLinkedConnections y el valor 1 ;
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLinkedConnections" /t REG_DWORD /d 0x00000001 /fo con PowerShell:
New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'Reinicie su computadora (o reinicie el servicio LanmanWorkstation con el comando:
get-service LanmanWorkstation |Restart-Service -Forcey vuelva a iniciar sesión en Windows).
Después de reiniciar la computadora, asegúrese de que el usuario pueda ver las unidades de red asignadas en los programas que se ejecutan con derechos de administrador. La declaración inversa es verdadera: todas las unidades de red asignadas en el modo elevado también estarán disponibles en la sesión de usuario sin privilegios.
Esto funciona en todas las versiones de Windows desde Vista hasta Windows 10/Windows Server 2019.
Nota. Desafortunadamente, no hay una configuración de GPO para habilitar el modo EnableLinkedConnections. Para aplicar esta configuración en las computadoras del dominio, debe implementar este parámetro de registro a través de GPP.
¿Cómo funciona? Después de habilitar el parámetro de registro EnableLinkedConnections, LanmanWorkstation y LSA (lsass.exe) buscarán un segundo token de acceso asociado a la sesión del usuario actual. Si se encuentra este token, la lista de unidades de red asignadas se copiará de un token a otro. Por lo tanto, las unidades de red asignadas en el modo privilegiado serán visibles en el modo normal y viceversa.
Consejo. Como solución alternativa, puede crear un enlace simbólico a la carpeta de red compartida de destino. Por ejemplo, de la siguiente manera:
mklink /D c:\docs \\dublin-fs1\docsPuede acceder a esta unidad tanto en modo normal como elevado. Cabe señalar que uno de los inconvenientes de este método es que accedes a la carpeta compartida como usuario actual. Es imposible utilizar la cuenta de otro usuario como en el caso de
net usedominio.
Después de habilitar el parámetro EnableLinkedConnections, las unidades asignadas también estarán disponibles desde las Tareas programadas iniciadas bajo el usuario actual. Si la tarea se ejecuta como LocalSystem u otro usuario, las unidades de red asignadas del usuario actual no estarán disponibles.





