Header Ads

Virtualbox: La ruta especificada no existe II

En la primera parte de este artículo, vimos cómo se solucionaba el problema de "la ruta especificada no existe" para Windows 7. Hoy lo explicaremos para Windows 10 y superior.
Un problema recurrente con VirtualBox es correr ejecutables desde las carpetas compartidas, especialmente en Windows. Ya hay suficientes  tickets abiertos sobre este tema.
Si se trata de abrir archivos de texto, imágenes, etc., no hay problemas, pero si lo intentamos con un ejecutable sale el error "The specified path does not exist"
Error al intentar ejecutar el instalador 7zip x64 desde una carpeta compartida en VM W10
En Windows 7 la solución es desactivar UAC:
W7: Desactivar UAC
Sin embargo, esto no sirve de nada en Windows 10. Según algunos sitios en internet, la solución es "renombrar el ejecutable" (argumento falso) o "copiar el ejecutable a la VM" (se llenará el disco de la VM y si es dinámico crecerá sin control a medida que copiemos ejecutables, sin mencionar la duplicidad). La solución radica en tratar a las carpetas compartidas como si fuesen unidades de red, pero sin conectarlas como unidades de red o asignarles una letra. O sea, utilizar UNC path.
UNC path
Una ruta Universal Naming Convention (UNC) usa barras diagonales dobles o barras diagonales inversas para preceder al nombre de la computadora. La ruta (disco y directorios) se separa con una sola barra o barra invertida. Tenga en cuenta que en DOS/Windows, las letras de unidad (c: d: etc.) no se utilizan. Ejemplo de sintaxis de UNC:
//servername/path   Unix
\\servername\path   DOS/Windows
A continuación los pasos:
Paso 1: Compartir las carpetas:
Vamos a la VM y hacemos el procedimiento habitual para compartir una carpeta (asegurarnos de tener instalado en la VM "Guest Additions" e iniciar la VM), solo que en esta ocasión no marcaremos la casilla "automontar" (y por ende tampoco asignaremos letra de unidad). Solamente seleccionamos la "Ruta carpeta" (en este ejemplo la carpeta "Test", que deben crear en el sistema anfitrión) y marcamos "Hacer permanente".
Anfitrión Ubuntu 20.04 compartiendo carpeta "Test" con VM huésped Windows 10 
(Sin letra de unidad y sin automontar)
Paso 2: Ejecutar vboxsrv
Una vez conectada nuestra carpeta compartida, ahora ejecutamos en la VM el comando \\vboxsrv
ejecutando \\vboxsrv
Se abre la carpeta compartida "Test": 
Carpeta "Test"
Ahora hacemos clic derecho sobre la carpeta y creamos un acceso directo al escritorio. 
Nota muy Importante: 
No es recomendable usar la opción "Conectar a unidad de red", ya que saldrá error con algunos binarios. Se puede solucionar con el paso 3, pero no en todos los casos, ya que algunos binarios dependen de otros archivos (ejemplo: los programas portables) y si todos están en UNC Path esto podría ser una limitante durante la ejecución, si el portable no está bien diseñado.
Aquí podemos "Crear acceso directo" (al escritorio)
Abrimos el acceso directo en el escritorio de la carpeta "Test" y lo ejecutamos:
carpeta compartida como acceso directo en el escritorio
Paso 3: Habilitar EnableLinkedConnections
El último paso es habilitar la clave EnableLinkedConnections, para facilitar la ejecución de binarios desde UNC Path. Ejecute el siguiente comando desde el terminal con privilegios:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLinkedConnections /t REG_DWORD /d 00000001 /f
  
Y es todo. Ya puede ejecutar cualquier archivo (binarios, documentos, etc.) desde UNC Path
Con la tecnología de Blogger.