From 247dbe2f7bb25268bac0ee12ab4a6d6176ebbbb2 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Tue, 14 Mar 2023 20:30:48 +0000 Subject: [PATCH] [ui] preserve user-specified label on error/cancel or drive insertion * Also produce warnings in the log if we detect Windows write-protection policies. --- src/rufus.c | 23 ++++++++++++----------- src/rufus.rc | 10 +++++----- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/rufus.c b/src/rufus.c index 1bed0d8a..c77e4fa1 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -1,6 +1,6 @@ /* * Rufus: The Reliable USB Formatting Utility - * Copyright © 2011-2022 Pete Batard + * Copyright © 2011-2023 Pete Batard * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -702,19 +702,15 @@ static void SetProposedLabel(int ComboIndex) { const char no_label[] = STR_NO_LABEL, empty[] = ""; + // If the user manually changed the label, try to preserve it + if (user_changed_label) + return; + app_changed_label = TRUE; // If bootable ISO creation is selected, and we have an ISO selected with a valid name, use that // Also some distros (eg. Arch) require the USB to have the same label as the ISO if ((boot_type == BT_IMAGE) && (image_path != NULL) && (img_report.label[0] != 0)) { SetWindowTextU(hLabel, img_report.label); - // If we force the ISO label, we need to reset the user_changed_label flag - user_changed_label = FALSE; - return; - } - - // If the user manually changed the label, try to preserve it - if (user_changed_label) { - app_changed_label = FALSE; return; } @@ -1393,9 +1389,10 @@ DWORD WINAPI ImageScanThread(LPVOID param) SetFileSystemAndClusterSize(NULL); SetFSFromISO(); SetMBRProps(); + user_changed_label = FALSE; SetProposedLabel(ComboBox_GetCurSel(hDeviceList)); } else { - SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE_INTERNAL<<16) | IDC_FILE_SYSTEM, + SendMessage(hMainDialog, WM_COMMAND, (CBN_SELCHANGE_INTERNAL << 16) | IDC_FILE_SYSTEM, ComboBox_GetCurSel(hFileSystem)); } // Lose the focus on the select ISO (but place it on Close) @@ -2055,6 +2052,11 @@ static void InitDialog(HWND hDlg) "one. Because of this, some messages will only be displayed in English.", selected_locale->txt[1]); uprintf("If you think you can help update this translation, please e-mail the author of this application"); } + // Detect and report system limitations + if (ReadRegistryKeyBool(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Policies\\Microsoft\\FVE")) + uprintf("WARNING: This system has a policy set to prevent write access to FIXED drives not using BitLocker"); + if (ReadRegistryKeyBool(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\StorageDevicePolicies\\WriteProtect")) + uprintf("WARNING: This system has a policy set to prevent write access to storage devices"); if (!is_vds_available) uprintf("Notice: Windows VDS is unavailable"); @@ -2839,7 +2841,6 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA if (!op_in_progress) { queued_hotplug_event = FALSE; GetDevices((DWORD)ComboBox_GetCurItemData(hDeviceList)); - user_changed_label = FALSE; EnableControls(TRUE, FALSE); if (ComboBox_GetCurSel(hDeviceList) < 0) { SetPartitionSchemeAndTargetSystem(FALSE); diff --git a/src/rufus.rc b/src/rufus.rc index 46972bde..cec2688d 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 232, 326 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 3.22.1997" +CAPTION "Rufus 3.22.1998" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -392,8 +392,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,22,1997,0 - PRODUCTVERSION 3,22,1997,0 + FILEVERSION 3,22,1998,0 + PRODUCTVERSION 3,22,1998,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -411,13 +411,13 @@ BEGIN VALUE "Comments", "https://rufus.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.22.1997" + VALUE "FileVersion", "3.22.1998" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2023 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" VALUE "OriginalFilename", "rufus-3.22.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.22.1997" + VALUE "ProductVersion", "3.22.1998" END END BLOCK "VarFileInfo"