Skip to content

Latest commit

Β 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ’Ύ ImageWriter

License: GPL v3 Platform Language Version Status PRs Welcome

GitHub Stars GitHub Forks GitHub Issues Last Commit Code Size

English Russian

A modern disk image writing utility for USB drives and SD cards

πŸ“Έ Screenshot

ImageWriter Pro main window


πŸ“– About

ImageWriter is a modernized and enhanced version of the dd for Windows utility, originally developed by John Newbigin. This project provides a graphical interface and additional features for writing disk images to removable media.


πŸ‘€ Credits

Original Project: dd for Windows by John Newbigin (jn@chrysocome.net)
Current Developer: Anton Zelenov (tixset@gmail.com)
GitHub: https://github.com/tixset/ImageWriter
License: GNU General Public License v3.0

πŸ“ Project Structure

ImageWriter/
β”œβ”€β”€ install.bat                   # Complete elevated Pro installation
β”œβ”€β”€ ImageWriter.dpr/.dproj       # Standard elevated application
β”œβ”€β”€ ImageWriterPro.dpr/.dproj    # Pro GUI using the Windows service
β”œβ”€β”€ ImageWriterSvc.dpr/.dproj    # LocalSystem service
β”œβ”€β”€ src/                         # Pascal units and VCL forms
β”‚   β”œβ”€β”€ MainForm.pas/.dfm        # Shared main form
β”‚   β”œβ”€β”€ IPCPipe.pas              # Bounded and authenticated named-pipe transport
β”‚   β”œβ”€β”€ ServiceIPC.pas           # Pro GUI service client
β”‚   β”œβ”€β”€ WorkerCommands.pas       # Privileged command implementation
β”‚   β”œβ”€β”€ SecurityUtils.pas        # Protected installation/data directories
β”‚   β”œβ”€β”€ managers/                # 16 business-logic units
β”‚   └── studio/                  # Hashing, RNG, and legacy helper units
β”œβ”€β”€ resources/                   # Manifests, icons, RC/RES files, and compression DLLs
β”‚   └── README.md                # Resource regeneration and DLL deployment notes
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ HtmlViewer/              # Git submodule required by the GUI projects
β”‚   └── README.md                # HtmlViewer source and setup instructions
β”œβ”€β”€ tests/                       # DUnit sources and PowerShell test scripts
β”œβ”€β”€ docs/                        # English/Russian guides and technical notes
β”œβ”€β”€ reports/                     # Dated audit reports (historical snapshots)
β”œβ”€β”€ assets/screenshots/          # Documentation images
β”œβ”€β”€ .github/workflows/           # Repository checks; no Delphi build runner
β”œβ”€β”€ BUILD_CONFIGURATION.md       # Canonical build instructions
β”œβ”€β”€ CONTRIBUTING.md              # Contribution guidelines
β”œβ”€β”€ SECURITY.md                  # Security policy
β”œβ”€β”€ CHANGELOG.md                 # Release history
└── LICENSE                      # GNU GPL v3.0

✨ Features

  • πŸŒ™ Dark / Light Theme - automatic theme switching following Windows system setting (VCL Styles)
  • πŸ–₯️ Graphical User Interface - Easy-to-use Windows GUI
  • ⌨️ Command-Line Interface (CLI) - Console mode for automation and scripting
  • πŸ’Ύ Multiple Image Formats - Support for raw, GZIP (.gz), ZIP (.zip), XZ, BZIP2, 7z, TAR
  • βœ… GUI Hash Verification - MD5 and SHA-256 support in GUI workflows
  • πŸ“Š Partition Information - Display MBR and GPT partition tables (even from archives!)
  • πŸ”’ UAC Elevation - Automatic privilege elevation on Vista and later
  • ⚑ High Performance - Optimized I/O operations with progress tracking
  • 🎯 Drag & Drop - Simple file selection via drag and drop
  • πŸ”§ Advanced Options - Block size, count, seek, and skip parameters
  • πŸ›‘οΈ Safe Operations - Volume locking and dismounting for data safety
  • πŸ“Š Progress Tracking - Real-time progress bar and status updates with ETA and speed
  • 🌐 Network Shares - Pro version supports network-mounted drives (UNC paths)
  • πŸ”„ Dynamic Loading - On-demand library loading for better startup performance
  • πŸ“ Comprehensive Logging - Detailed per-user operation logs
  • πŸ”§ Clean Code Architecture - Modular design with 15+ manager modules
  • πŸ§ͺ Test Sources - DUnit and PowerShell tests are present; see the current limitations in tests/README.md
  • 🎯 Active Development - Recent refactoring and GitHub-ready infrastructure
  • πŸ›‘οΈ Repository Automation - GitHub workflows perform structural checks; Delphi compilation requires a configured Windows runner or the IDE
  • πŸ”¬ Device Benchmarking - Test disk performance with read/write benchmarks
  • πŸ₯ Device Health Monitoring - Automatic diagnostics with WMI, SMART, and partition validation
  • πŸ›‘οΈ Smart Safety Features - Visual health indicators and write protection for critical devices
  • πŸ”„ Settings Persistence - Automatic save/load of BS, Count, Hash algorithm to INI file
  • πŸ”Š Sound Notifications - Audio feedback on operation completion
  • πŸ“Œ Taskbar Progress - Windows 7+ taskbar progress indication
  • 🎡 Auto-eject - Optional automatic device ejection after successful write

πŸš€ Quick Start

Prerequisites

  • Windows 7 or later (Vista supported with limitations)
  • Administrator privileges for writing to disk devices
  • The bundled 32-bit compression DLLs are installed or extracted automatically

Building from Source

Initialize the HtmlViewer submodule after cloning:

git submodule update --init --recursive

Open the project in Delphi 12 IDE (Embarcadero Studio 23.0) and use Project β†’ Build All. Build order: ImageWriter.dproj β†’ ImageWriterPro.dproj β†’ ImageWriterSvc.dproj.

Note: Delphi 12 Community Edition does not support command-line (dcc32 / msbuild) compilation. Use the IDE.

Usage

GUI Mode

  1. Run ImageWriter.exe or ImageWriterPro.exe
  2. Select source image file or device
  3. Select target device
  4. Configure options (block size, count, etc.)
  5. Click "Write" or "Read"

Versions:

  • ImageWriter.exe - Standard version for local drives
  • ImageWriterPro.exe - Extended version with network share support and Windows Service
  • ImageWriterSvc.exe - Windows Service for privileged disk operations (used by Pro version)

Windows Service Setup (ImageWriter Pro, requires Administrator):

install.bat

This performs the protected installation, verifies the service, and creates all-users Desktop and Start Menu shortcuts. Keep install.bat, ImageWriterPro.exe, and ImageWriterSvc.exe together when running it.

Installation also stops and disables the Windows ShellHWDetection service to suppress AutoPlay format prompts for Linux partitions. This is a system-wide, persistent change that disables Windows AutoPlay/AutoRun detection. See the user guide for the effect and restoration commands.

For manual service-only setup:

ImageWriterPro.exe --install

This installs and starts the service, enabling disk writes without UAC prompts. To remove: ImageWriterPro.exe --uninstall

CLI Mode (Console)

Current status: device listing, help and version output are suitable for use. Destructive CLI workflows are experimental: post-write verification, read hashing and archive creation have known correctness defects documented in CHANGELOG.md. Prefer the GUI for disk operations.

List available devices:

ImageWriter.exe --cli --list

Show help:

ImageWriter.exe --cli --help

Do not rely on --hash or post-write --verify until the open P1 issues in the changelog are fixed.

πŸ“– Documentation

Full documentation is available in the docs/ directory:

πŸ§ͺ Testing

The DUnit and PowerShell test sources are under tests/. The current DUnit runner has a known compilation defect in IPCIntegrationTests.pas, and the public GitHub workflows do not compile or execute the product. See tests/README.md for safe, currently available checks.

🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md before submitting pull requests.

πŸ“œ License

GNU General Public License v3.0 - see LICENSE for details.

πŸ”’ Security

If you discover a security vulnerability, please see SECURITY.md for responsible disclosure guidelines.

πŸ› οΈ Technology Stack

  • Delphi 12 (Embarcadero Studio 23.0)
  • Win32 API for low-level disk access
  • Named Pipes for IPC in Pro version
  • WMI (Windows Management Instrumentation) for device info
  • ZLib / BZip2 / XZ / LZMA for compressed image support (dynamic loading)
  • 7-Zip (external) for 7z/XZ/BZIP2 compression

πŸ™ Acknowledgments

  • John Newbigin - Original author of dd for Windows
  • The ZLib team for the compression library
  • The 7-Zip team for the archiver
  • All contributors to this project

πŸ“ž Contact

πŸ”— Links


Made with ❀️ for the open-source community

Note: This is a derivative work based on dd for Windows.
Original project Β© Chrysocome and John Newbigin, available under the GPL license.

Releases

Packages

Contributors

Languages