VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/BootEncryption.cpp
diff options
context:
space:
mode:
authorMounir IDRASSI <mounir.idrassi@idrix.fr>2018-04-22 16:14:53 +0200
committerMounir IDRASSI <mounir.idrassi@idrix.fr>2018-04-23 16:59:36 +0200
commit3659ddd70ce8f1616a44e5bcce793eda076b835d (patch)
treef34e796866cf21e0a2f4140ccf697095949d5df0 /src/Common/BootEncryption.cpp
parentf4edd72662106798dc216c5cabbf39605391523e (diff)
downloadVeraCrypt-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.cpp35
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);