A modern disk image writing utility for USB drives and SD cards
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.
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
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
- π 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
- 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
Initialize the HtmlViewer submodule after cloning:
git submodule update --init --recursiveOpen 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.
- Run ImageWriter.exe or ImageWriterPro.exe
- Select source image file or device
- Select target device
- Configure options (block size, count, etc.)
- 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.batThis 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 --installThis installs and starts the service, enabling disk writes without UAC prompts.
To remove: ImageWriterPro.exe --uninstall
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 --listShow help:
ImageWriter.exe --cli --helpDo not rely on --hash or post-write --verify until the open P1 issues in the changelog are fixed.
Full documentation is available in the docs/ directory:
- User Guide (EN)
- Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (RU)
- Commit Conventions
- Device Health Features
- Contributing Guidelines
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.
We welcome contributions! Please read CONTRIBUTING.md before submitting pull requests.
GNU General Public License v3.0 - see LICENSE for details.
If you discover a security vulnerability, please see SECURITY.md for responsible disclosure guidelines.
- 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
- 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
- Author: Anton Zelenov
- Email: tixset@gmail.com
- GitHub: https://github.com/tixset/ImageWriter
- Original dd for Windows: John Newbigin (jn@chrysocome.net)
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.
