Application Windows native (WinUI 3) de copie de disque secteur par secteur, inspirée de HDD Raw Copy Tool. Tout est copié à l'identique : tables de partitions, secteurs de démarrage, partitions cachées, espace non alloué.
⚠️ La cible est entièrement écrasée. Vérifie le numéro du disque avant de cliquer sur Cloner.
| Source | Cible | Usage |
|---|---|---|
| Disque | Disque | Clonage, migration HDD → SSD |
| Disque | Image .img |
Sauvegarde |
| Image | Disque | Restauration |
| Image | Image | Copie d'image |
- Copie brute par blocs de 4 Mo, sans cache Windows, avec progression, débit et annulation.
- Secteurs illisibles : la copie continue. Le bloc est relu secteur par secteur, les secteurs perdus sont remplis de zéros et leurs positions (LBA) affichées.
- SHA-256 de la source calculé pendant la copie, et vérification optionnelle par relecture de la cible.
- Infos disque : bus (USB, SATA, NVMe…), MBR/GPT, état de santé, secteurs logiques/physiques, n° de série, firmware.
- Mise en veille bloquée pendant la copie.
| Contrôle | Résultat |
|---|---|
| Source et cible identiques | Bloqué |
| Cible = disque système ou de démarrage | Bloqué |
| Cible en lecture seule | Bloqué |
| Cible plus petite que la source | Bloqué |
| Tailles de secteur différentes (512 / 4096) | Bloqué : la table de partitions serait fausse |
| Image stockée sur le disque source (sauvegarde) ou cible (restauration) | Bloqué |
| Taille de l'image non multiple du secteur cible | Bloqué |
| Pas assez de place pour l'image | Bloqué : l'espace est réservé avant la copie |
| Volume source utilisé par un programme | Avertissement, on peut continuer : la copie risque d'être incohérente |
| Disque source en mauvaise santé | Avertissement |
| Données de la cible effacées | Confirmation |
- Les volumes source sont verrouillés quand c'est possible, pour une copie cohérente.
- Le disque cible est mis hors ligne avant l'écriture : Windows interdit d'écrire sur un volume monté.
- Il reste hors ligne à la fin : il a la même signature que la source. Retire la source avant de démarrer sur la cible.
- Sur une cible plus grande, l'espace en plus n'est attribué à aucune partition : à étendre dans la Gestion des disques.
Il te faut Windows 10 ou 11 et le SDK .NET 10. L'application demande les droits administrateur (fenêtre UAC) : l'accès brut aux disques l'exige.
dotnet run --project src/DiskCopy.csproj| Commande | Effet |
|---|---|
dotnet build src/DiskCopy.csproj |
Compile |
dotnet run --project src/DiskCopy.csproj |
Compile et lance l'application |
dotnet publish src/DiskCopy.csproj -c Release -r win-x64 --self-contained |
Version autonome dans src/bin/Release/.../publish/, rien à installer sur le PC cible |
Aucune variable d'environnement. Pas encore de tests automatisés.
🧪 Pour tester sans risque, crée deux disques virtuels (Gestion des disques → Action → Créer un disque dur virtuel, format VHD taille fixe) et clone l'un sur l'autre.
.
└── src/
├── DiskCopy.csproj Projet WinUI 3 : non packagé, Windows App SDK embarqué
├── app.manifest Demande les droits administrateur
├── App.xaml(.cs) Point d'entrée
├── MainWindow.xaml(.cs) Fenêtre et barre de titre
├── MainPage.xaml(.cs) Interface : choix source / cible, confirmation, progression
├── Drive.cs Source ou cible : disque physique ou fichier image
├── Disk.cs Disques et volumes via WMI (MSFT_Disk, MSFT_Partition)
├── Cloner.cs Contrôles, verrouillage, copie, secteurs illisibles, SHA-256
└── Assets/AppIcon.ico Icône
| Besoin | Solution | Doc |
|---|---|---|
| Lister les disques (taille exacte, système, santé) | WMI MSFT_Disk |
MSFT_Disk |
| Lire / écrire le disque brut | \\.\PhysicalDriveN, FILE_FLAG_NO_BUFFERING, tampon aligné |
CreateFile |
| Pouvoir écrire sur la cible | MSFT_Disk.Offline |
Offline |
| Détecter une source utilisée | FSCTL_LOCK_VOLUME échoue si des fichiers sont ouverts |
FSCTL_LOCK_VOLUME |
| Choisir un fichier en mode admin | Sélecteurs du Windows App SDK | Pickers |
Seules les erreurs de support (ERROR_CRC, ERROR_SECTOR_NOT_FOUND, ERROR_READ_FAULT, ERROR_IO_DEVICE) sont traitées comme des secteurs illisibles. Toute autre erreur, comme un disque débranché, arrête la copie.