diff --git a/src/pki.c b/src/pki.c index 31bd0aad..36d0d119 100644 --- a/src/pki.c +++ b/src/pki.c @@ -61,6 +61,14 @@ char* GetSignatureName(const char* path) SPROG_PUBLISHERINFO ProgPubInfo = { 0 }; wchar_t *szFileName = utf8_to_wchar(path); + // If the path is NULL, get the signature of the current runtime + if (path == NULL) { + szFileName = calloc(MAX_PATH, sizeof(wchar_t)); + if (szFileName == NULL) + return NULL; + GetModuleFileNameW(GetModuleHandle(NULL), szFileName, MAX_PATH); + } + // Get message handle and store handle from the signed file. r = CryptQueryObject(CERT_QUERY_OBJECT_FILE, szFileName, CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, CERT_QUERY_FORMAT_FLAG_BINARY, diff --git a/src/rufus.c b/src/rufus.c index ce57a09a..1a95fcca 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -2910,7 +2910,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine int wait_for_mutex = 0; FILE* fd; BOOL attached_console = FALSE, external_loc_file = FALSE, lgp_set = FALSE, automount = TRUE; - BOOL disable_hogger = FALSE, previous_enable_HDDs = FALSE, vc = FALSE; + BOOL disable_hogger = FALSE, previous_enable_HDDs = FALSE, vc = IsRegistryNode(REGKEY_HKCU, vs_reg); BYTE *loc_data; DWORD loc_size, size; char tmp_path[MAX_PATH] = "", loc_file[MAX_PATH] = "", ini_path[MAX_PATH] = "", ini_flags[] = "rb"; @@ -2965,7 +2965,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine if ((strcmp(argv[i], "-g") == 0) || (strcmp(argv[i], "--gui") == 0)) disable_hogger = TRUE; } - vc = IsRegistryNode(REGKEY_HKCU, vs_reg) || (safe_strcmp(GetSignatureName(argv[0]), cert_name[0]) == 0); // If our application name contains a 'p' (for "portable") create a 'rufus.ini' // NB: argv[0] is populated in the previous loop tmp = &argv[0][strlen(argv[0]) - 1]; @@ -3046,6 +3045,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine // Look for a .ini file in the current app directory static_sprintf(ini_path, "%s\\rufus.ini", app_dir); fd = fopenU(ini_path, ini_flags); // Will create the file if portable mode is requested + vc |= (safe_strcmp(GetSignatureName(NULL), cert_name[0]) == 0); if (fd != NULL) { ini_file = ini_path; fclose(fd); diff --git a/src/rufus.rc b/src/rufus.rc index 8a189d3f..b4bf3acd 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 2.15.1117" +CAPTION "Rufus 2.15.1118" FONT 8, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -334,8 +334,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,15,1117,0 - PRODUCTVERSION 2,15,1117,0 + FILEVERSION 2,15,1118,0 + PRODUCTVERSION 2,15,1118,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -352,13 +352,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "2.15.1117" + VALUE "FileVersion", "2.15.1118" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2017 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "2.15.1117" + VALUE "ProductVersion", "2.15.1118" END END BLOCK "VarFileInfo"