TL;DR — Resumen Rápido
Solución para: Resuelto: Hyper-V General access denied error when trying to load a Virtual Hard Drive. Diagnóstico y resolución paso a paso.
Nota: Este artículo fue publicado originalmente en 2014. Algunos pasos, comandos o versiones de software pueden haber cambiado. Consulta la documentación actual de Hyper V para la información más reciente.
Error: “General access denied error” al cargar un disco duro virtual en Hyper-V
Si recientemente moviste, restauraste de un respaldo, o copiaste a mano archivos de almacenamiento de una máquina virtual (VHD o VHDX) de una ubicación física a otra, es probable que la VM se rehúse a iniciar.
Cuando intentas encender la máquina virtual desde el Hyper-V Manager, te recibe una variación del siguiente mensaje de error de acceso restringido:
Administrador de Hyper-V Ocurrió un error al intentar iniciar la máquina virtual seleccionada. ‘VMName’ falló al iniciar. ‘VMName’ controlador IDE emulado por Microsoft: Fallo al encender con el error ‘General access denied error’ (0x80070005). ‘VMName’: La cuenta no cuenta con los suficientes privilegios para abrir el adjunto ‘C:\Users\Public\Documents\Hyper-V\Virtual hard disks\DiskName.vhdx’. Error: ‘General access denied error’ (0x80070005).
¿Por qué ocurre esto? (El Problema)
La verdadera causa de este problema recae en los principios y permisos de seguridad NTFS nativos de Windows Server. Cada máquina virtual operando dentro de Hyper-V funciona internamente mediante un usuario / principal de seguridad único y oculto asociado a su Identificador (Virtual Machine ID).
Cuando un disco VHD o VHDX se encuentra correctamente montado hacia su respectiva máquina virtual, el sistema Hyper-V automáticamente otorga acceso absoluto de lectura (Read) y escritura (Write) de ese archivo físico específico a esta misteriosa cuenta oculta representada por el “VM ID”.
Sin embargo, si utilizas el Explorador de Archivos de Windows, presionas CTRL+C y pegas manualmente tu archivo .vhdx asumiendo que transferiste tu máquina virtual en lugar de utilizar el asistente nativo “Mover…” de Hyper-V Manager, lo único que lograste fue despojar al archivo de aquellos permisos invisibles específicos. Sin su derecho a manipular dicho archivo, el servicio de Hyper-V es literalmente denegado al intentar usar su propio disco duro.
Las Soluciones de Recuperación
Para solucionar este error 0x80070005, necesitamos entregarle nuevamente al sistema y cuenta los derechos de poder utilizar su disco.
Aunque parezca tentador, no recomendamos intentar ir a la viñeta de Propiedades de Windows -> Seguridad del archivo e intentar agregar manualmenete a la lista cuentas de usuarios para abrir permisos, ya que los VM IDs son variables ocultas erráticas y complejas de atar por un administrador regular.
En lugar de intentar manipular las listas de control (ACLs), utiliza exclusivamente una de las dos vías oficiales listadas a continuación enfocadas en que el Hyper-V reparé internamente los comandos de la lista de control de accesos.
Método 1: Elimina y Añade usando Interfaz Gráfica de Hyper-V (Recomendado)
La vía más fluida y segura para subsanar los permisos caídos del VHD es simplemente desconectar virtualmente el disco con error y volver a introducirlo como hardware. Cada vez que fuerzas al Hyper-V a inyectar hardware en su interfaz, éste invoca mandatos a nivel kernel encargados de auto-restablecer cada permiso correcto en el disco del servidor.
- Inicia o abre el Administrador de Hyper-V.
- Dale clic derecho/secundario con tu ratón en la Máquina Virtual rota o averiada y pulsa en Configuración (Settings).
- Bajo el árbol izquierdo bajo Hardware, haz click sobre el elemento Disco Duro (Hard Drive) que te está provocando el caos y el error.
- Oprime el botón que dice Quitar/Remover, y luego dale clic instantáneamente a Aplicar (Apply) (No te asustes, este procedimiento no borra los datos guardados en tu sistema local, solamente desvincula y desconecta tu disco de la VM).
- Inmediatamente allí mismo en el menú de la izquierda clica tu rama principal del controlador de inicio principal, usualmente IDE Controller (o SCSI Controller dependiente a compatibilidad).
- Allí seleccionamos a agregar un nuevo Hard Drive y elegimos la opción de Agregar (Add).
- Al cargarse tu espacio virtual blanco, presionaremos a la ventana de Examinar (Browse…), localiza manualmente el archivo
.vhdxabandonado inicial, acéptalo. - Sal de tu configuración oprimiendo OK y ejecuta o enciende el boot up de tu VM de nuevo. El error habrá cesado por completo.
Método 2: Arreglar el Acceso mediante PowerShell
Si eres administrador general en un Hyper-V cluster extenso con gran volumen y requieres solventar incidentes sin ventanas lentas gráficas de GUI, puedes utilizar la terminal y PowerShell en modo elevado para desacoplar el disco, forzando idénticamente los reseteos del punto anterior pero acudiendo desde línea de códigos masiva automatizada.
Ejecuta un terminal PowerShell (como Administrador) e ingresa estos bloques reemplazando adecuadamente tus rutas:
# 1. En primera instancia, elimina y desconecta temporalmente el disco con accesos retenidos en tu VM en cuestión
Remove-VMHardDiskDrive -VMName "Tu_Nombre_VM" -ControllerType IDE -ControllerNumber 0 -ControllerLocation 0
# 2. Vuelve a enlazar obligatoriamente tu máquina al hardware físico real y permite forzar inyección automática para restructuración ACLs en su base de datos principal
Add-VMHardDiskDrive -VMName "Tu_Nombre_VM" -ControllerType IDE -ControllerNumber 0 -ControllerLocation 0 -Path "C:\Ruta\Al\Directorio\DiskName.vhdx"
Nota: Modifica el valor del bloque -ControllerType IDE a SCSI si trabajas utilizando una Virtual Machine configurada en Generación 2.
Justo luego de haber invocado lo previo exitosamente, el molesto error de Access Denied 0x80070005 quedará mitigado y la VM funcionará como siempre.