diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-04-22 16:14:53 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2018-04-23 16:59:36 +0200 |
commit | 3659ddd70ce8f1616a44e5bcce793eda076b835d (patch) | |
tree | f34e796866cf21e0a2f4140ccf697095949d5df0 /src/Common/BootEncryption.cpp | |
parent | f4edd72662106798dc216c5cabbf39605391523e (diff) | |
download | VeraCrypt-3659ddd70ce8f1616a44e5bcce793eda076b835d.tar.gz VeraCrypt-3659ddd70ce8f1616a44e5bcce793eda076b835d.zip |
Windows: enhance ReflectDrivers mechanism by persisting it across major Windows upgrades.
Diffstat (limited to 'src/Common/BootEncryption.cpp')
-rw-r--r-- | src/Common/BootEncryption.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
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); |