Diagnostic et remédiation des blocages de virtualisation imbriquée sous Windows.
Si Hyper-V, VBS, HVCI ou Credential Guard monopolisent les extensions matérielles VT-x / AMD-V, les hyperviseurs tiers comme EVE-NG, VMware Workstation ou VirtualBox refusent de démarrer leurs VMs. Virtool identifie la cause, propose un plan de correction et l'applique, avec rollback automatique en cas d'échec.
Télécharger Virtool.exe (68 Mo) · Télécharger virtool-cli.exe (34 Mo)
- Virtool
- Sommaire
- Le problème résolu
- Comment fonctionne Virtool
- Ce que Virtool fait
- Ce que Virtool ne fait pas
- Téléchargement et installation
- Utilisation, interface graphique
- Utilisation, ligne de commande
- Modifications apportées au système
- Sécurité, snapshots et rollback
- Rapports et journaux
- Prérequis système
- Compiler depuis les sources
- Questions fréquentes
- Licence
- Auteur
Hyper-V, VBS, HVCI et Credential Guard reposent sur un hyperviseur Microsoft qui prend le contrôle exclusif des extensions de virtualisation matérielle. Tant que cet hyperviseur tourne, EVE-NG, VMware Workstation et VirtualBox ne peuvent pas s'exécuter correctement: soit ils refusent de démarrer, soit leurs VMs tombent en erreur immédiatement.
Désactiver ces mécanismes manuellement demande de modifier le registre, d'ajuster le BCD, de désactiver plusieurs fonctionnalités Windows via DISM, puis de redémarrer pour vérifier. Une erreur dans la séquence peut bloquer le démarrage du système ou casser d'autres usages du poste.
Virtool automatise ce processus et sécurise chaque étape.
-
Diagnostic. Onze sondes examinent le registre Windows, le BCD, les services, les fonctionnalités optionnelles et le firmware. Chacune produit un résultat: prêt, avertissement, bloqué ou indéterminé.
-
Verdict. Les résultats sont agrégés en un verdict global. Un système n'est déclaré prêt que si aucune sonde ne remonte d'état bloqué ou indéterminé. Une incertitude n'est jamais traitée comme un feu vert.
-
Plan. Les causes de blocage sont traduites en une séquence d'actions concrètes: écriture de registre, modification BCD, arrêt de service, désactivation de fonctionnalité DISM. Chaque action est réversible.
-
Snapshot. Avant d'appliquer le plan, Virtool capture l'état complet du système dans un fichier JSON horodaté.
-
Application. Les actions sont exécutées dans l'ordre. Après chaque action, Virtool vérifie que l'effet attendu est bien obtenu.
-
Rollback. Au premier échec, le rollback restaure l'état d'origine à partir du snapshot, en commençant par la dernière action appliquée.
-
Rapport. Un rapport complet (JSON et texte) est généré et peut être exporté.
| Mécanisme | Sonde | Action corrective |
|---|---|---|
| VBS | Registre + WMI | EnableVirtualizationBasedSecurity à 0, HyperVVirtualizationBasedSecurityOptout à 1 |
| Hyperviseur Windows | WMI HypervisorPresent |
bcdedit /set hypervisorlaunchtype off |
| HVCI | Registre | Scenarios\HypervisorEnforcedCodeIntegrity\Enabled à 0 |
| Credential Guard | Registre | Scenarios\CredentialGuard\Enabled à 0 |
| System Guard Secure Launch | Registre | Scenarios\SystemGuard\Enabled à 0 |
| Services Hyper-V | WMI Win32_Service |
sc config et sc stop sur vmcompute, HvHost, vmms |
| Windows Hypervisor Platform | WMI Win32_OptionalFeature |
DISM disable HypervisorPlatform |
| Hyper-V complet | WMI Win32_OptionalFeature |
DISM disable Microsoft-Hyper-V-All |
| Plateforme d'ordinateur virtuel | WMI Win32_OptionalFeature |
DISM disable VirtualMachinePlatform |
| Bac à sable Windows | WMI Win32_OptionalFeature |
DISM disable Containers-DisposableClientVM |
| BitLocker | WMI Win32_EncryptableVolume |
Avertissement uniquement |
| Politique Active Directory | WMI + registre | Action manuelle, Virtool ne contourne pas |
| Verrou UEFI | Registre | Action manuelle |
| Virtualisation firmware | WMI Win32_Processor |
Action manuelle dans le BIOS/UEFI |
- Virtool ne modifie jamais le firmware UEFI ni le BIOS. Si un verrou UEFI empêche la désactivation, Virtool affiche une procédure manuelle.
- Virtool ne contourne jamais une politique Active Directory. Si une GPO impose VBS, Virtool le signale et vous invite à contacter votre administrateur.
- Virtool n'envoie aucune donnée sur Internet. Tout reste sur la machine locale.
- Virtool ne redémarre pas la machine automatiquement. Un bandeau vous prévient quand un redémarrage est nécessaire, vous choisissez le moment.
- Virtool ne restaure pas les VMs Hyper-V supprimées. Désactiver Hyper-V désactive les VMs Hyper-V existantes. Un avertissement explicite apparaît dans le plan avant application.
Télécharger Virtool.exe (68 Mo)
Télécharger virtool-cli.exe (34 Mo)
Chaque binaire est publié avec son empreinte SHA256 dans un fichier .sha256 adjacent. Les fichiers .sha256 sont téléchargeables sur la page de la release.
Vérification sous PowerShell:
Get-FileHash Virtool.exe -Algorithm SHA256
Comparez le résultat avec le contenu du fichier Virtool.exe.sha256.
Aucune installation n'est nécessaire. Le binaire est autonome et embarque le runtime .NET 8. Double-cliquez sur Virtool.exe, acceptez l'invite UAC, l'application s'ouvre.
Windows Defender SmartScreen affichera probablement un avertissement « Éditeur inconnu » au premier lancement. Voir la FAQ correspondante pour comprendre pourquoi et comment procéder.
L'application s'ouvre sur la vue Diagnostic.
Cliquez sur « Lancer le diagnostic ». Onze sondes s'exécutent en parallèle en moins de deux secondes. Chaque sonde affiche son statut:
- PRÊT (vert) : mécanisme inactif
- ATTENTION (jaune) : contrainte détectée, non bloquante
- BLOQUÉ (rouge) : mécanisme actif, bloquant
- INDÉTERMINÉ (gris) : mesure impossible (droits, WMI muet, etc.)
La barre inférieure affiche le verdict global.
Si le système est bloqué, cliquez sur « Voir le plan de remédiation ». La liste des actions s'affiche avec leur type (BCD, registre, service, fonctionnalité) et un éventuel avertissement.
Si un verrou UEFI est détecté, un bouton « Instructions UEFI détaillées » apparaît. Il ouvre la procédure manuelle à suivre dans le firmware. Une case à cocher confirme que vous avez effectué l'action. Le plan ne peut pas être appliqué sans cette confirmation.
Cliquez sur « Appliquer le plan ». La vue Exécution affiche la progression. Chaque étape est appliquée puis vérifiée.
En cas de succès, l'écran affiche le nombre d'étapes appliquées et un bouton « Exporter le rapport » (JSON et texte). En cas d'échec, l'écran indique quelle étape a échoué et le résultat du rollback.
Un bandeau jaune indique si un redémarrage est nécessaire.
virtool-cli.exe offre deux commandes, en lecture seule.
virtool-cli diagnose
Sortie texte. Code de retour: 0 si le système est prêt, 1 si un blocage est détecté, 2 en cas d'erreur interne.
virtool-cli diagnose --verbose
Ajoute le détail de chaque sonde, avec preuve technique.
virtool-cli diagnose --json
Sortie structurée, exploitable par jq ou un script:
virtool-cli diagnose --json | jq '.isReady'
virtool-cli report
Affiche le dernier rapport de remédiation enregistré.
Le CLI ne dispose pas de manifest administrateur. Sans privilèges élevés, certaines sondes (BCD, BitLocker) retourneront « indéterminé ». C'est un comportement volontaire : le CLI signale ce qu'il ne peut pas mesurer au lieu de le supposer.
Virtool peut modifier les éléments suivants, uniquement après confirmation de l'utilisateur et après capture d'un snapshot.
Registre Windows
HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard(EnableVirtualizationBasedSecurity,HyperVVirtualizationBasedSecurityOptout,RequirePlatformSecurityFeatures,Locked)HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrityHKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\CredentialGuardHKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard
Configuration de démarrage (BCD)
hypervisorlaunchtype
Services Windows
vmcompute,HvHost,vmms
Fonctionnalités optionnelles (DISM)
HypervisorPlatform,Microsoft-Hyper-V-All,VirtualMachinePlatform,Containers-DisposableClientVM
Aucune autre zone du système n'est touchée. Aucune valeur n'est écrite sans avoir été capturée dans le snapshot.
Avant chaque application de plan, Virtool capture l'état complet des zones qu'il peut modifier et l'enregistre dans %ProgramData%\Virtool\snapshots\. Le fichier JSON est écrit atomiquement (fichier temporaire puis renommage) pour ne jamais être corrompu en cas de crash.
Si le snapshot est manifestement incomplet (BCD illisible, registre inaccessible, WMI muet), Virtool refuse l'application du plan. Mieux vaut ne rien faire que de risquer un rollback impossible.
Au premier échec d'application ou de vérification, Virtool restaure les étapes déjà appliquées, dans l'ordre inverse. Le rollback est best-effort : si une restauration individuelle échoue, les autres sont quand même tentées. Le rapport final indique combien d'étapes ont pu être restaurées.
Chaque exécution produit un rapport JSON et TXT, enregistré dans %ProgramData%\Virtool\reports\. Ces fichiers peuvent être supprimés à tout moment. Ils ne sont jamais transmis à l'extérieur.
Emplacements des fichiers:
| Contenu | Dossier |
|---|---|
| Snapshots | %ProgramData%\Virtool\snapshots\ |
| Rapports d'exécution | %ProgramData%\Virtool\reports\ |
Chaque rapport contient : verdict du diagnostic, snapshot complet, plan prévu, résultat de chaque étape (application et vérification), rapport de rollback, résultat final.
Le bouton « Exporter le rapport » ouvre une boîte de dialogue qui copie le JSON et le texte vers un emplacement de votre choix. Ces deux fichiers peuvent être joints à un ticket support sans risque de fuite d'information sensible.
- Windows 10 ou Windows 11, x64
- Privilèges administrateur (nécessaires pour WMI
Win32_DeviceGuard,bcdedit, DISM) - 100 Mo d'espace disque
- Aucune dépendance externe (le runtime .NET 8 est embarqué)
Le binaire est actuellement construit pour win-x64. Une version win-arm64 peut être produite depuis les sources.
Nécessite .NET 8 SDK.
git clone https://github.com/Nelson2410/virtool.git
cd virtool
dotnet build
dotnet test
powershell -ExecutionPolicy Bypass -File build/publish.ps1
Le script produit :
dist/Virtool/Virtool.exe(interface graphique)dist/Virtool.Cli/virtool-cli.exe(interface ligne de commande)
Chaque binaire est accompagné de son empreinte SHA256.
| Dossier | Rôle |
|---|---|
src/Virtool.Core/ |
Moteur de diagnostic et de remédiation (aucune dépendance UI) |
src/Virtool.App/ |
Interface graphique WPF |
src/Virtool.Cli/ |
Interface ligne de commande |
src/Virtool.Core.Tests/ |
Tests unitaires du moteur |
src/Virtool.App.Tests/ |
Tests unitaires des ViewModels |
build/ |
Scripts de publication |
Windows Defender bloque Virtool.exe. Que faire ?
Windows Defender peut réagir à un exécutable inconnu demandant des privilèges administrateur. Acceptez l'exécution via « Informations complémentaires » puis « Exécuter quand même ». Si Defender met le fichier en quarantaine, restaurez-le manuellement. Voir la question suivante sur la signature.
Virtool est-il signé numériquement ?
Non, le binaire n'est pas signé pour la version 0.1.x.
La signature de code avec un certificat reconnu (OV ou EV) coûte entre 200 € et 800 € par an, ce qui n'est pas justifié pour un projet personnel à diffusion limitée. Un certificat auto-signé est gratuit mais n'apporte aucun bénéfice SmartScreen : l'avertissement « Éditeur inconnu » persiste à l'identique. Signer avec un certificat auto-signé serait de la fausse sécurité.
Comment vérifier l'intégrité du binaire sans signature ?
Chaque binaire est accompagné d'un fichier .sha256 contenant son empreinte SHA256. Pour vérifier :
Get-FileHash Virtool.exe -Algorithm SHA256
Comparez le résultat à la première colonne du fichier Virtool.exe.sha256. Si les deux empreintes correspondent, le fichier n'a pas été altéré pendant le téléchargement. Les empreintes officielles sont aussi publiées avec chaque version.
Une version future sera-t-elle signée ?
Une publication sur le Microsoft Store est envisagée pour une version ultérieure. Depuis 2025, le Store accepte les applications Win32 packagées en MSIX et signe automatiquement le binaire avec son propre certificat de confiance, sans aucun coût pour le développeur. Cette option reste à l'étude et n'est pas planifiée pour la version 0.1.x.
J'utilise Hyper-V pour d'autres VMs. Virtool va-t-il tout casser ?
Virtool affiche un avertissement explicite avant de désactiver les fonctionnalités Hyper-V. Sauvegardez vos VMs Hyper-V avant de continuer. Si vous avez besoin d'Hyper-V en parallèle, Virtool n'est probablement pas l'outil adapté.
Virtool redémarre-t-il la machine automatiquement ?
Non. Virtool détecte les changements qui nécessitent un redémarrage et affiche un bandeau. Vous redémarrez quand vous le souhaitez.
Est-ce que mes données sont envoyées quelque part ?
Non. Aucun appel réseau, aucune télémétrie, aucun envoi automatique. Les rapports sont enregistrés localement et exportés uniquement sur votre demande.
Que faire si le rollback échoue ?
Le rapport d'échec indique précisément quelles étapes n'ont pas pu être annulées. Les valeurs d'origine sont dans le snapshot JSON de %ProgramData%\Virtool\snapshots\. Elles peuvent être restaurées manuellement.
Quelle est la différence entre Virtool.exe et virtool-cli.exe ?
Virtool.exe offre l'interface graphique et peut appliquer un plan de remédiation. virtool-cli.exe offre seulement le diagnostic et la lecture de rapports, sans modification du système. Le CLI est conçu pour l'automatisation en lecture seule.
Ce projet est sous licence MIT.
Copyright (c) 2026 Nelson Bandos.
Nelson Bandos | Réseaux & Infrastructure IT
Développement assisté par DeepSeek.