mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[core] prevent the enumeration of Windows 10 19H1 sandbox VHDs
* The new 19H1 Windows Sandbox feature relies on VHDs labelled 'PortableBaseLayer' → Don't list those
This commit is contained in:
parent
5b1ae09df4
commit
f95aa94c57
5 changed files with 27 additions and 8 deletions
|
@ -10,6 +10,7 @@ o Version 3.6 (2019.07.??)
|
||||||
Fix progress bar report for screen readers (Accessibility issue)
|
Fix progress bar report for screen readers (Accessibility issue)
|
||||||
Fix a regression where Windows format prompts would not be suppressed
|
Fix a regression where Windows format prompts would not be suppressed
|
||||||
Improve(?) Windows To Go support by following Microsoft's recommended partition order
|
Improve(?) Windows To Go support by following Microsoft's recommended partition order
|
||||||
|
Don't enumerate Windows Sandbox VHDs
|
||||||
Disable ISO mode when Manjaro ISOHybrids are being used
|
Disable ISO mode when Manjaro ISOHybrids are being used
|
||||||
Update embedded GRUB to version 2.04
|
Update embedded GRUB to version 2.04
|
||||||
|
|
||||||
|
|
|
@ -11,17 +11,18 @@ Rufus: The Reliable USB Formatting Utility
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
|
||||||
* Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS
|
* Format USB, flash card and virtual drives to FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
|
||||||
* Create DOS bootable USB drives, using [FreeDOS](http://www.freedos.org) or MS-DOS (Windows 8.1 or earlier)
|
* Create DOS bootable USB drives, using [FreeDOS](http://www.freedos.org) or MS-DOS (Windows 8.1 or earlier)
|
||||||
* Create BIOS or UEFI bootable drives, including [UEFI bootable NTFS](https://github.com/pbatard/uefi-ntfs)
|
* Create BIOS or UEFI bootable drives, including [UEFI bootable NTFS](https://github.com/pbatard/uefi-ntfs)
|
||||||
* Create bootable drives from bootable ISOs (Windows, Linux, etc.)
|
* Create bootable drives from bootable ISOs (Windows, Linux, etc.)
|
||||||
* Create bootable drives from bootable disk images, including compressed ones
|
* Create bootable drives from bootable disk images, including compressed ones
|
||||||
* Create [Windows To Go](https://en.wikipedia.org/wiki/Windows_To_Go) drives
|
* Create [Windows To Go](https://en.wikipedia.org/wiki/Windows_To_Go) drives
|
||||||
|
* Create persistent Linux partitions
|
||||||
* Download official Microsoft Windows 8 or Windows 10 retail ISOs
|
* Download official Microsoft Windows 8 or Windows 10 retail ISOs
|
||||||
* Compute MD5, SHA-1 and SHA-256 checksums of the selected image
|
* 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 <sup>(1)</sup>
|
* Twice as fast as Microsoft's USB/DVD tool or UNetbootin, on ISO -> USB creation <sup>(1)</sup>
|
||||||
* Perform bad blocks checks, including detection of "fake" flash drives
|
* Perform bad blocks checks, including detection of "fake" flash drives
|
||||||
* Modern and familiar UI, with [39 languages natively supported](https://github.com/pbatard/rufus/wiki/FAQ#What_languages_are_natively_supported_by_Rufus)
|
* Modern and familiar UI, with [38 languages natively supported](https://github.com/pbatard/rufus/wiki/FAQ#What_languages_are_natively_supported_by_Rufus)
|
||||||
* Small footprint. No installation required.
|
* Small footprint. No installation required.
|
||||||
* Portable
|
* Portable
|
||||||
* 100% [Free Software](https://www.gnu.org/philosophy/free-sw) ([GPL v3](https://www.gnu.org/licenses/gpl-3.0))
|
* 100% [Free Software](https://www.gnu.org/philosophy/free-sw) ([GPL v3](https://www.gnu.org/licenses/gpl-3.0))
|
||||||
|
|
|
@ -453,6 +453,7 @@ BOOL GetDevices(DWORD devnum)
|
||||||
"_SD_", "_SDHC_", "_MMC_", "_MS_", "_MSPro_", "_xDPicture_", "_O2Media_"
|
"_SD_", "_SDHC_", "_MMC_", "_MS_", "_MSPro_", "_xDPicture_", "_O2Media_"
|
||||||
};
|
};
|
||||||
const char* usb_speed_name[USB_SPEED_MAX] = { "USB", "USB 1.0", "USB 1.1", "USB 2.0", "USB 3.0" };
|
const char* usb_speed_name[USB_SPEED_MAX] = { "USB", "USB 1.0", "USB 1.1", "USB 2.0", "USB 3.0" };
|
||||||
|
const char* windows_sandbox_vhd_label = "PortableBaseLayer";
|
||||||
// Hash table and String Array used to match a Device ID with the parent hub's Device Interface Path
|
// Hash table and String Array used to match a Device ID with the parent hub's Device Interface Path
|
||||||
htab_table htab_devid = HTAB_EMPTY;
|
htab_table htab_devid = HTAB_EMPTY;
|
||||||
StrArray dev_if_path;
|
StrArray dev_if_path;
|
||||||
|
@ -883,6 +884,13 @@ BOOL GetDevices(DWORD devnum)
|
||||||
safe_free(devint_detail_data);
|
safe_free(devint_detail_data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// Windows 10 19H1 mounts a 'PortableBaseLayer' for its Windows Sandbox feature => unlist those
|
||||||
|
if (safe_strcmp(label, windows_sandbox_vhd_label) == 0) {
|
||||||
|
uprintf("Device eliminated because it's a Windows Sandbox VHD");
|
||||||
|
safe_closehandle(hDrive);
|
||||||
|
safe_free(devint_detail_data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// The empty string is returned for drives that don't have any volumes assigned
|
// The empty string is returned for drives that don't have any volumes assigned
|
||||||
if (drive_letters[0] == 0) {
|
if (drive_letters[0] == 0) {
|
||||||
|
|
11
src/drive.c
11
src/drive.c
|
@ -954,14 +954,23 @@ BOOL GetDriveLabel(DWORD DriveIndex, char* letters, char** label)
|
||||||
{
|
{
|
||||||
HANDLE hPhysical;
|
HANDLE hPhysical;
|
||||||
DWORD size, error;
|
DWORD size, error;
|
||||||
static char VolumeLabel[MAX_PATH + 1];
|
static char VolumeLabel[MAX_PATH + 1] = { 0 };
|
||||||
char DrivePath[] = "#:\\", AutorunPath[] = "#:\\autorun.inf", *AutorunLabel = NULL;
|
char DrivePath[] = "#:\\", AutorunPath[] = "#:\\autorun.inf", *AutorunLabel = NULL;
|
||||||
|
WCHAR VolumeName[MAX_PATH + 1] = { 0 }, FileSystemName[64];
|
||||||
|
DWORD VolumeSerialNumber, MaximumComponentLength, FileSystemFlags;
|
||||||
|
|
||||||
*label = STR_NO_LABEL;
|
*label = STR_NO_LABEL;
|
||||||
|
|
||||||
if (!GetDriveLetters(DriveIndex, letters))
|
if (!GetDriveLetters(DriveIndex, letters))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (letters[0] == 0) {
|
if (letters[0] == 0) {
|
||||||
|
// Even if we don't have a letter, try to obtain the label of the first partition
|
||||||
|
HANDLE h = GetLogicalHandle(DriveIndex, 0, FALSE, FALSE, FALSE);
|
||||||
|
if (GetVolumeInformationByHandleW(h, VolumeName, 64, &VolumeSerialNumber,
|
||||||
|
&MaximumComponentLength, &FileSystemFlags, FileSystemName, 64)) {
|
||||||
|
wchar_to_utf8_no_alloc(VolumeName, VolumeLabel, sizeof(VolumeLabel));
|
||||||
|
*label = VolumeLabel;
|
||||||
|
}
|
||||||
// Drive without volume assigned - always enabled
|
// Drive without volume assigned - always enabled
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
IDD_DIALOG DIALOGEX 12, 12, 232, 326
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 3.6.1549"
|
CAPTION "Rufus 3.6.1550"
|
||||||
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
|
||||||
|
@ -394,8 +394,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,6,1549,0
|
FILEVERSION 3,6,1550,0
|
||||||
PRODUCTVERSION 3,6,1549,0
|
PRODUCTVERSION 3,6,1550,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -413,13 +413,13 @@ BEGIN
|
||||||
VALUE "Comments", "https://akeo.ie"
|
VALUE "Comments", "https://akeo.ie"
|
||||||
VALUE "CompanyName", "Akeo Consulting"
|
VALUE "CompanyName", "Akeo Consulting"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "3.6.1549"
|
VALUE "FileVersion", "3.6.1550"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2019 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2019 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus-3.6.exe"
|
VALUE "OriginalFilename", "rufus-3.6.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "3.6.1549"
|
VALUE "ProductVersion", "3.6.1550"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue