Windows: enhance ReflectDrivers mechanism by persisting it across major Windows upgrades.

This commit is contained in:
Mounir IDRASSI 2018-04-22 16:14:53 +02:00
parent f4edd72662
commit 3659ddd70c
No known key found for this signature in database
GPG Key ID: DD0C382D5FCFB8FC
3 changed files with 42 additions and 4 deletions

View File

@ -2722,8 +2722,37 @@ namespace VeraCrypt
StringCchCatW (szSetupconfigLocation, ARRAYSIZE (szSetupconfigLocation), L"SetupConfig.ini");
if (bForInstall || FileExists (szSetupconfigLocation))
WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", bForInstall? szInstallPath : NULL, szSetupconfigLocation);
if (bForInstall)
{
wstring szPathParam = L"\"";
szPathParam += szInstallPath;
szPathParam += L"\"";
WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", szPathParam.c_str(), szSetupconfigLocation);
szPathParam = GetProgramConfigPath (L"SetupComplete.cmd");
FILE* scriptFile = _wfopen (szPathParam.c_str(), L"w");
if (scriptFile)
{
fwprintf (scriptFile, L"\"%s\\VeraCrypt.exe\" /PostOOBE\n", szInstallPath);
fclose (scriptFile);
WritePrivateProfileStringW (L"SetupConfig", L"PostOOBE", szPathParam.c_str(), szSetupconfigLocation);
}
}
else
{
if (FileExists (szSetupconfigLocation))
{
WritePrivateProfileStringW (L"SetupConfig", L"ReflectDrivers", NULL, szSetupconfigLocation);
WritePrivateProfileStringW (L"SetupConfig", L"PostOOBE", NULL, szSetupconfigLocation);
}
wstring scriptFilePath = GetProgramConfigPath (L"SetupComplete.cmd");
if (FileExists (scriptFilePath.c_str()))
{
::DeleteFileW (scriptFilePath.c_str());
}
}
}
}
}
@ -3717,7 +3746,7 @@ namespace VeraCrypt
finally_do ({ EfiBootInst.DismountBootPartition(); });
EfiBootInst.MountBootPartition(0);
EfiBootInst.MountBootPartition(0);
EfiBootInst.GetFileSize(Is64BitOs()? L"\\EFI\\Boot\\bootx64.efi" : L"\\EFI\\Boot\\bootia32.efi", loaderSize);

View File

@ -310,7 +310,7 @@ namespace VeraCrypt
void GetEfiBootDeviceNumber (PSTORAGE_DEVICE_NUMBER pSdn);
void BackupSystemLoader ();
void RestoreSystemLoader ();
void UpdateSetupConfigFile (bool bForInstall);
static void UpdateSetupConfigFile (bool bForInstall);
protected:
static const uint32 RescueIsoImageSize = 1835008; // Size of ISO9660 image with bootable emulated 1.44MB floppy disk image
@ -354,4 +354,6 @@ namespace VeraCrypt
#define TC_SYSTEM_FAVORITES_SERVICE_LOAD_ORDER_GROUP L"Event Log"
#define TC_SYSTEM_FAVORITES_SERVICE_CMDLINE_OPTION L"/systemFavoritesService"
#define VC_WINDOWS_UPGRADE_POSTOOBE_CMDLINE_OPTION L"/PostOOBE"
#endif // TC_HEADER_Common_BootEncryption

View File

@ -9383,6 +9383,13 @@ int WINAPI wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpsz
if (argv && argc == 2 && wstring (TC_SYSTEM_FAVORITES_SERVICE_CMDLINE_OPTION) == argv[1])
return StartSystemFavoritesService() ? 0 : 1;
if (argv && argc == 2 && wstring (VC_WINDOWS_UPGRADE_POSTOOBE_CMDLINE_OPTION) == argv[1])
{
InitOSVersionInfo();
BootEncryption::UpdateSetupConfigFile (true);
return 0;
}
int status;
atexit (localcleanup);
SetProcessShutdownParameters (0x100, 0);