Header Ads

Virtualbox: La ruta especificada no existe

Si trabajamos con máquinas virtuales de Oracle VirtualBox, nos habremos percatado de que posee la capacidad de compartir carpetas desde el anfitrión, o sea podremos compartir un directorio para poder intercambiar datos entre la máquina virtual y la física.
Carpeta compartida VirtualBox
Desde estas unidades, también podemos ejecutar programas (portables, scripts, etc), incluso transferir algunos tipos de archivos específicos (de sistema, con extensiones potencialmente peligrosas, etc), pero puede suceder que nos salga el mensaje "La ruta especificada no existe"
Ejecución de programa Dextroyer.exe desde una carpeta compartida en Virtualbox
Una descripción detallada de este error, en inglés, puede encontrarla en el ticket 5732:
Location is not available or path does not exist
Generalmente este error se presenta si nuestro host es Linux y la VM es Windows (no importa si la partición es ext4, NTFS, etc) y normalmente cuando el archivo o programa se encuentra dentro de un directorio en la carpeta compartida con la VM (en algunos casos no sucede si el archivo y/o programa se encuentra en la raíz de la carpeta compartida).
Microsoft documenta este problema, y atribuye la causa subyacente al Control de Cuentas de Usuario UAC (User Access Control). Según Microsoft, cuando un administrador inicia sesión en una máquina con el Modo de aprobación de administrador habilitado (AAM), se le otorgan dos tokens de acceso al usuario: un token de acceso de administrador completo y un token de acceso de usuario estándar filtrado. De forma predeterminada, cuando un miembro del grupo de Administradores local inicia sesión, los privilegios administrativos de Windows se desactivan y se eliminan los derechos de usuario elevados, lo que da como resultado el token de acceso de usuario estándar. El token de acceso de usuario estándar se utiliza para iniciar el escritorio (Explorer.exe). Explorer.exe es el proceso principal desde el cual todos los demás procesos iniciados por el usuario heredan su token de acceso. Como resultado, todas las aplicaciones se ejecutan como un usuario estándar de manera predeterminada a menos que un usuario brinde su consentimiento o credenciales para aprobar que una aplicación use un token de acceso administrativo completo. En contraste con este proceso, cuando un usuario estándar inicia sesión, solo se crea un token de acceso de usuario estándar. Este token de acceso de usuario estándar se utiliza para iniciar el escritorio. El usuario ha mapeado una unidad utilizando la opción de Map Network Drive en Windows Explorer o ejecutando el comando net use en un símbolo del sistema no elevado. Las unidades asignadas se pueden ver al ejecutar el uso de red como un usuario estándar desde un símbolo del sistema no elevado. En este caso, el disco fue mapeado como un usuario estándar.
Solución
Para poder ejecutar archivos y/o programas desde unidades compartidas en VirtualBox se debe realizar cualquiera de las siguiente acciones:
2. Elevar los privilegios de la ejecución del programa y/o transferencia de archivos
3. Bypass UAC
Para el usuario "normal", la primera opción es la más factible, siempre y cuando sea una medida provisional, ya que su equipo quedará desprotegido.
Para activar/desactivar UAC puede hacerlo manualmente en el Panel de Control/Cuentas de Usuario o utilizar las siguientes claves de registro. En cualquier caso debe reiniciar:
DisableUAC.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000

EnableUAC.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000001

Lea Parte II
Con la tecnología de Blogger.