Búsqueda de sitios web

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 /all

comando 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 sessionElevated user session
Security group 

Mandatory Label\Medium Mandatory Level Label S-1-16-8192

Mandatory Label\High Mandatory Level Label S-1-16-12288
PrivilegesSeLockMemoryPrivilege

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 use

o

rundll32 SHELL32.dll,SHHelpShortcuts_RunDLL Connect

Habilitar 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:

  1. Abra el editor de registro (regedit.exe);

  2. Vaya a la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System;

  3. 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 /f

    o con PowerShell:

    New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -Name EnableLinkedConnections -Value 1 -PropertyType 'DWord'
  4. Reinicie su computadora (o reinicie el servicio LanmanWorkstation con el comando:

    get-service LanmanWorkstation |Restart-Service -Force

    y 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\docs

Puede 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 use

dominio.

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.

Artículos relacionados