mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-11-10 13:13:34 +01:00
Windows: Warn about Fast Startup if it is enabled during system encryption or volume creation and propose to disable it
This commit is contained in:
parent
1c3e4fd0ee
commit
587e6db4f1
@ -5673,6 +5673,16 @@ namespace VeraCrypt
|
||||
|
||||
if (!rescueIsoImagePath.empty())
|
||||
CreateRescueIsoImage (true, rescueIsoImagePath);
|
||||
|
||||
// check if Fast Startup is enabled and if yes then offer to disable it
|
||||
BOOL bHibernateEnabled = FALSE, bHiberbootEnabled = FALSE;
|
||||
if (GetHibernateStatus (bHibernateEnabled, bHiberbootEnabled) && bHiberbootEnabled)
|
||||
{
|
||||
if (AskWarnYesNo ("CONFIRM_DISABLE_FAST_STARTUP", ParentWindow) == IDYES)
|
||||
{
|
||||
WriteLocalMachineRegistryDwordValue (L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power", L"HiberbootEnabled", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool BootEncryption::IsPagingFileActive (BOOL checkNonWindowsPartitionsOnly)
|
||||
|
@ -291,3 +291,42 @@ extern "C" int UacAnalyzeHiddenVolumeHost (HWND hwndDlg, int *driveNo, __int64 h
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
extern "C" BOOL UacWriteLocalMachineRegistryDword (HWND hwndDlg, wchar_t *keyPath, wchar_t *valueName, DWORD value)
|
||||
{
|
||||
CComPtr<ITrueCryptFormatCom> tc;
|
||||
int r = 0;
|
||||
|
||||
CoInitialize (NULL);
|
||||
|
||||
if (ComGetInstance (hwndDlg, &tc))
|
||||
{
|
||||
CComBSTR keyPathBstr, valueNameBstr;
|
||||
BSTR bstr = W2BSTR(keyPath);
|
||||
if (bstr)
|
||||
{
|
||||
keyPathBstr.Attach (bstr);
|
||||
bstr = W2BSTR(valueName);
|
||||
if (bstr)
|
||||
{
|
||||
valueNameBstr.Attach (bstr);
|
||||
r = tc->WriteLocalMachineRegistryDwordValue (keyPathBstr, valueNameBstr, value);
|
||||
}
|
||||
else
|
||||
r = ERROR_OUTOFMEMORY;
|
||||
}
|
||||
else
|
||||
r = ERROR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
CoUninitialize ();
|
||||
|
||||
if (r == ERROR_SUCCESS)
|
||||
return TRUE;
|
||||
else
|
||||
{
|
||||
SetLastError (r);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ int UacFormatFs (HWND hWnd, int driveNo, int clusterSize, int fsType);
|
||||
int UacAnalyzeHiddenVolumeHost (HWND hwndDlg, int *driveNo, __int64 hiddenVolHostSize, int *realClusterSize, __int64 *nbrFreeClusters);
|
||||
int UacFormatVolume (char *cvolumePath , BOOL bDevice , unsigned __int64 size , unsigned __int64 hiddenVolHostSize , Password *password , int cipher , int pkcs5 , BOOL quickFormat, BOOL sparseFileSwitch, int fileSystem , int clusterSize, HWND hwndDlg , BOOL hiddenVol , int *realClusterSize);
|
||||
BOOL UacUpdateProgressBar (__int64 nSecNo, BOOL *bVolTransformThreadCancel);
|
||||
BOOL UacWriteLocalMachineRegistryDword (HWND hwndDlg, wchar_t *keyPath, wchar_t *valueName, DWORD value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -8453,6 +8453,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||
else if (nCurPageNo == FORMAT_PAGE)
|
||||
{
|
||||
/* Format start (the 'Next' button has been clicked on the Format page) */
|
||||
static BOOL g_bFastStartupCheckDone = FALSE;
|
||||
|
||||
if (bVolTransformThreadRunning || bVolTransformThreadToRun)
|
||||
return 1;
|
||||
@ -8461,6 +8462,23 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
||||
|
||||
bVolTransformThreadToRun = TRUE;
|
||||
|
||||
// check if Fast Startup is enabled and if yes then offer to disable it
|
||||
if (!g_bFastStartupCheckDone)
|
||||
{
|
||||
BOOL bHibernateEnabled = FALSE, bHiberbootEnabled = FALSE;
|
||||
if (GetHibernateStatus (bHibernateEnabled, bHiberbootEnabled) && bHiberbootEnabled)
|
||||
{
|
||||
if (AskWarnYesNo ("CONFIRM_DISABLE_FAST_STARTUP", hwndDlg) == IDYES)
|
||||
{
|
||||
if (!IsAdmin () && IsUacSupported ())
|
||||
UacWriteLocalMachineRegistryDword (hwndDlg, L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power", L"HiberbootEnabled", 0);
|
||||
else
|
||||
WriteLocalMachineRegistryDword (L"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power", L"HiberbootEnabled", 0);
|
||||
}
|
||||
}
|
||||
g_bFastStartupCheckDone = true;
|
||||
}
|
||||
|
||||
fileSystem = (int) SendMessage (GetDlgItem (hCurPage, IDC_FILESYS), CB_GETITEMDATA,
|
||||
SendMessage (GetDlgItem (hCurPage, IDC_FILESYS), CB_GETCURSEL, 0, 0) , 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user