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…
	
	Add table
		Add a link
		
	
		Reference in a new issue