From 3659ddd70ce8f1616a44e5bcce793eda076b835d Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sun, 22 Apr 2018 16:14:53 +0200 Subject: Windows: enhance ReflectDrivers mechanism by persisting it across major Windows upgrades. --- src/Common/BootEncryption.cpp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src/Common/BootEncryption.cpp') diff --git a/src/Common/BootEncryption.cpp b/src/Common/BootEncryption.cpp index c62df958..9c69ef04 100644 --- a/src/Common/BootEncryption.cpp +++ b/src/Common/BootEncryption.cpp @@ -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); -- cgit v1.2.3