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.

  1. Inicia o abre el Administrador de Hyper-V.
  2. Dale clic derecho/secundario con tu ratón en la Máquina Virtual rota o averiada y pulsa en Configuración (Settings).
  3. Bajo el árbol izquierdo bajo Hardware, haz click sobre el elemento Disco Duro (Hard Drive) que te está provocando el caos y el error.
  4. 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).
  5. 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).
  6. Allí seleccionamos a agregar un nuevo Hard Drive y elegimos la opción de Agregar (Add).
  7. Al cargarse tu espacio virtual blanco, presionaremos a la ventana de Examinar (Browse…), localiza manualmente el archivo .vhdx abandonado inicial, acéptalo.
  8. 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.

Artículos Relacionados