![]() * A user is reporting that, on one of their platforms, Rufus is writing to the wrong target during the file-copy phase and using their existing Y: local drive instead of the drive associated to the USB, despite the fact that Rufus is passing the right volume name to GetVolumePathNamesForVolumeName(). * Here's the PowerShell wmic output, confirming that the volume GUID obtained by Rufus is the right one: DriveLetter : Y: DeviceId : \\?\Volume{000349b1-17d0-69f6-c13f-f31162930600}\ Capacity : 118540464128 FileSystem : NTFS Label : Y-DISK DriveLetter : H: DeviceId : \\?\Volume{b150ff4a-d62b-11ea-86e3-f49634660e54}\ Capacity : 15791824896 FileSystem : FAT32 Label : ADATA16GB * And here's the Rufus log demonstrating that GetVolumePathNamesForVolumeName() is returning the *WRONG* letter: Found volume \\?\Volume{b150ff4a-d62b-11ea-86e3-f49634660e54}\ \\?\Volume{b150ff4a-d62b-11ea-86e3-f49634660e54}\ is already mounted as Y: instead of H: - Will now use this target instead... * The last line shows, without the shadow of a doubt, that we did feed "\\?\Volume{b150ff4a-d62b-11ea-86e3-f49634660e54}\" to GetVolumePathNamesForVolumeName() and that this API call was successful (returned a non zero size) but ultimately returned the wrong letter (Y: instead of H:)... * Therefore, Windows is BUGGY and the use of GetVolumePathNamesForVolumeName() must be avoided. |
||
---|---|---|
.github | ||
.vs | ||
res | ||
src | ||
.gitattributes | ||
.gitignore | ||
_chver.sh | ||
_coverity.cmd | ||
_detect-amend.sh | ||
_pre-commit.sh | ||
_release.sh | ||
_set_git_hooks.sh | ||
_sign.cmd | ||
aclocal.m4 | ||
appveyor.yml | ||
bootstrap.sh | ||
ChangeLog.txt | ||
compile | ||
configure | ||
configure.ac | ||
install-sh | ||
LICENSE.txt | ||
Makefile.am | ||
Makefile.in | ||
missing | ||
README.md | ||
rufus.sln |
Rufus: The Reliable USB Formatting Utility
Rufus is a utility that helps format and create bootable USB flash drives.
Features
- Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
- Create DOS bootable USB drives, using FreeDOS or MS-DOS (Windows 8.1 or earlier)
- Create BIOS or UEFI bootable drives, including UEFI bootable NTFS
- Create bootable drives from bootable ISOs (Windows, Linux, etc.)
- Create bootable drives from bootable disk images, including compressed ones
- Create Windows To Go drives
- Create persistent Linux partitions
- Download official Microsoft Windows 8 or Windows 10 retail ISOs
- Compute MD5, SHA-1 and SHA-256 checksums of the selected image
- Twice as fast as Microsoft's USB/DVD tool or UNetbootin, on ISO -> USB creation (1)
- Perform bad blocks checks, including detection of "fake" flash drives
- Modern and familiar UI, with 38 languages natively supported
- Small footprint. No installation required.
- Portable
- 100% Free Software (GPL v3)
Compilation
Use either Visual Studio 2019 (version 16.0 or later with SDK 10.0.18362 installed) or MinGW and
then invoke the .sln
or configure
/make
respectively.
Visual Studio
Rufus is an OSI compliant Open Source project. You are entitled to download and use the freely available Visual Studio Community Edition to build, run or develop for Rufus. As per the Visual Studio Community Edition license, this applies regardless of whether you are an individual or a corporate user.
Additional information
Rufus provides extensive information about what it is doing, either through its easily accessible log, or through the Windows debug facility.
Enhancements/Bugs
Please use the GitHub issue tracker for reporting problems or suggesting new features.
(1) Tests carried out with a 16 GB USB 3.0 ADATA pen drive on a Core 2 duo/4 GB RAM platform running Windows 7 x64.
ISO: en_windows_7_ultimate_with_sp1_x64_dvd_618240.iso
Name of tool | Version | Time |
---|---|---|
Windows USB/DVD Download Tool | v1.0.30 | 8 mins 10s |
UNetbootin | v1.1.1.1 | 6 mins 20s |
Rufus | v1.1.0 | 3 mins 25s |