Skip to content
TeksyaPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

💽 DiskCopy

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

✨ Fonctionnalités

  • 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ôles avant 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

🔒 Pendant et après la copie

  • 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.

🚀 Lancer en local

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.

🗂️ Structure du projet

.
└── 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

⚙️ Sous le capot

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.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages