mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 11:08:02 -06:00
Windows: Solve privacy issue inherited from TrueCrypt and linked to the update of configuration and history XML files everytime VeraCrypt main window is opened, even if there was no modifications. This could give information about the usage of VeraCrypt. Now, configuration and history XML files are updated only when there are modifications.
This commit is contained in:
@@ -133,23 +133,64 @@ LPARAM UpdateComboOrder (HWND hComboBox)
|
|||||||
return nIndex;
|
return nIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadCombo (HWND hComboBox)
|
void LoadCombo (HWND hComboBox, BOOL bEnabled, BOOL bOnlyCheckModified, BOOL *pbModified)
|
||||||
{
|
{
|
||||||
DWORD size;
|
DWORD size;
|
||||||
char *history = LoadFile (GetConfigPath (TC_APPD_FILENAME_HISTORY), &size);
|
char *history = LoadFile (GetConfigPath (TC_APPD_FILENAME_HISTORY), &size);
|
||||||
char *xml = history;
|
char *xml = history;
|
||||||
char volume[MAX_PATH];
|
char volume[MAX_PATH];
|
||||||
|
int i, nComboIdx[SIZEOF_MRU_LIST] = {0};
|
||||||
|
int count = SendMessage (hComboBox, CB_GETCOUNT, 0, 0);
|
||||||
|
|
||||||
if (xml == NULL) return;
|
if (xml == NULL)
|
||||||
|
|
||||||
while (xml = XmlFindElement (xml, "volume"))
|
|
||||||
{
|
{
|
||||||
XmlGetNodeText (xml, volume, sizeof (volume));
|
// No history XML file but history is enabled
|
||||||
AddComboItem (hComboBox, volume, TRUE);
|
if (bEnabled && pbModified)
|
||||||
xml++;
|
*pbModified = TRUE;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SendMessage (hComboBox, CB_SETCURSEL, 0, 0);
|
if (!bEnabled && bOnlyCheckModified)
|
||||||
|
{
|
||||||
|
// History is disable but there is a history XML file
|
||||||
|
if (pbModified)
|
||||||
|
*pbModified = TRUE;
|
||||||
|
free (history);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* combo list part:- get mru items */
|
||||||
|
for (i = 0; i < SIZEOF_MRU_LIST; i++)
|
||||||
|
nComboIdx[i] = GetOrderComboIdx (hComboBox, &nComboIdx[0], i);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (xml = XmlFindElement (xml, "volume"))
|
||||||
|
{
|
||||||
|
char szTmp[MAX_PATH] = { 0 };
|
||||||
|
|
||||||
|
if (i < count)
|
||||||
|
{
|
||||||
|
if (SendMessage (hComboBox, CB_GETLBTEXTLEN, nComboIdx[i], 0) < sizeof (szTmp))
|
||||||
|
SendMessage (hComboBox, CB_GETLBTEXT, nComboIdx[i], (LPARAM) & szTmp[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
XmlGetNodeText (xml, volume, sizeof (volume));
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
AddComboItem (hComboBox, volume, TRUE);
|
||||||
|
|
||||||
|
if (pbModified && strcmp (volume, szTmp))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
|
||||||
|
xml++;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pbModified && (i != count))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
SendMessage (hComboBox, CB_SETCURSEL, 0, 0);
|
||||||
|
|
||||||
free (history);
|
free (history);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ void AddComboItem (HWND hComboBox, char *lpszFileName, BOOL saveHistory);
|
|||||||
LPARAM MoveEditToCombo (HWND hComboBox, BOOL saveHistory);
|
LPARAM MoveEditToCombo (HWND hComboBox, BOOL saveHistory);
|
||||||
int GetOrderComboIdx ( HWND hComboBox , int *nIdxList , int nElems );
|
int GetOrderComboIdx ( HWND hComboBox , int *nIdxList , int nElems );
|
||||||
LPARAM UpdateComboOrder ( HWND hComboBox );
|
LPARAM UpdateComboOrder ( HWND hComboBox );
|
||||||
void LoadCombo ( HWND hComboBox );
|
void LoadCombo (HWND hComboBox, BOOL bEnabled, BOOL bOnlyCheckModified, BOOL *pbModified);
|
||||||
void DumpCombo ( HWND hComboBox , int bClear );
|
void DumpCombo ( HWND hComboBox , int bClear );
|
||||||
void ClearCombo (HWND hComboBox);
|
void ClearCombo (HWND hComboBox);
|
||||||
int IsComboEmpty (HWND hComboBox);
|
int IsComboEmpty (HWND hComboBox);
|
||||||
|
|||||||
@@ -712,32 +712,69 @@ static BOOL CreatingHiddenSysVol (void)
|
|||||||
&& bHiddenVol && !bHiddenVolHost);
|
&& bHiddenVol && !bHiddenVolHost);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadSettings (HWND hwndDlg)
|
static void ConfigReadCompareInt(char *configKey, int defaultValue, int* pOutputValue, BOOL bOnlyCheckModified, BOOL* pbModified)
|
||||||
{
|
{
|
||||||
EnableHwEncryption ((ReadDriverConfigurationFlags() & TC_DRIVER_CONFIG_DISABLE_HARDWARE_ENCRYPTION) ? FALSE : TRUE);
|
int intValue = ConfigReadInt (configKey, defaultValue);
|
||||||
|
if (pOutputValue)
|
||||||
|
{
|
||||||
|
if (pbModified && (*pOutputValue != intValue))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
*pOutputValue = intValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ConfigReadCompareString (char *configKey, char *defaultValue, char *str, int maxLen, BOOL bOnlyCheckModified, BOOL *pbModified)
|
||||||
|
{
|
||||||
|
char *strValue = (char*) malloc (maxLen);
|
||||||
|
memcpy (strValue, str, maxLen);
|
||||||
|
|
||||||
|
ConfigReadString (configKey, defaultValue, strValue, maxLen);
|
||||||
|
|
||||||
|
if (pbModified && strcmp (str, strValue))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
memcpy(str, strValue, maxLen);
|
||||||
|
|
||||||
|
free (strValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LoadSettingsAndCheckModified (HWND hwndDlg, BOOL bOnlyCheckModified, BOOL* pbSettingsModified, BOOL* pbHistoryModified)
|
||||||
|
{
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
EnableHwEncryption ((ReadDriverConfigurationFlags() & TC_DRIVER_CONFIG_DISABLE_HARDWARE_ENCRYPTION) ? FALSE : TRUE);
|
||||||
|
|
||||||
WipeAlgorithmId savedWipeAlgorithm = TC_WIPE_NONE;
|
WipeAlgorithmId savedWipeAlgorithm = TC_WIPE_NONE;
|
||||||
|
|
||||||
LoadSysEncSettings (hwndDlg);
|
if (!bOnlyCheckModified)
|
||||||
|
LoadSysEncSettings (hwndDlg);
|
||||||
|
|
||||||
if (LoadNonSysInPlaceEncSettings (&savedWipeAlgorithm) != 0)
|
if (!bOnlyCheckModified && LoadNonSysInPlaceEncSettings (&savedWipeAlgorithm) != 0)
|
||||||
bInPlaceEncNonSysPending = TRUE;
|
bInPlaceEncNonSysPending = TRUE;
|
||||||
|
|
||||||
defaultKeyFilesParam.EnableKeyFiles = FALSE;
|
if (!bOnlyCheckModified)
|
||||||
|
defaultKeyFilesParam.EnableKeyFiles = FALSE;
|
||||||
|
|
||||||
bStartOnLogon = ConfigReadInt ("StartOnLogon", FALSE);
|
ConfigReadCompareInt ("StartOnLogon", FALSE, &bStartOnLogon, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
HiddenSectorDetectionStatus = ConfigReadInt ("HiddenSectorDetectionStatus", 0);
|
ConfigReadCompareInt ("HiddenSectorDetectionStatus", 0, &HiddenSectorDetectionStatus, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bHistory = ConfigReadInt ("SaveVolumeHistory", FALSE);
|
ConfigReadCompareInt ("SaveVolumeHistory", FALSE, &bHistory, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
ConfigReadString ("SecurityTokenLibrary", "", SecurityTokenLibraryPath, sizeof (SecurityTokenLibraryPath) - 1);
|
ConfigReadCompareString ("SecurityTokenLibrary", "", SecurityTokenLibraryPath, sizeof (SecurityTokenLibraryPath) - 1, bOnlyCheckModified, pbSettingsModified);
|
||||||
if (SecurityTokenLibraryPath[0])
|
if (!bOnlyCheckModified && SecurityTokenLibraryPath[0])
|
||||||
InitSecurityTokenLibrary(hwndDlg);
|
InitSecurityTokenLibrary(hwndDlg);
|
||||||
|
|
||||||
|
if (bOnlyCheckModified)
|
||||||
|
{
|
||||||
|
char langid[6] = {0};
|
||||||
|
StringCbCopyA (langid, sizeof(langid), GetPreferredLangId ());
|
||||||
|
ConfigReadCompareString ("Language", "", langid, sizeof (langid), TRUE, pbSettingsModified);
|
||||||
|
}
|
||||||
|
|
||||||
if (hwndDlg != NULL)
|
if (hwndDlg != NULL)
|
||||||
{
|
{
|
||||||
LoadCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
|
LoadCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), bHistory, bOnlyCheckModified, pbHistoryModified);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -745,24 +782,39 @@ static void LoadSettings (HWND hwndDlg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void LoadSettings (HWND hwndDlg)
|
||||||
|
{
|
||||||
|
LoadSettingsAndCheckModified (hwndDlg, FALSE, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void SaveSettings (HWND hwndDlg)
|
static void SaveSettings (HWND hwndDlg)
|
||||||
{
|
{
|
||||||
WaitCursor ();
|
WaitCursor ();
|
||||||
|
|
||||||
if (hwndDlg != NULL)
|
// Check first if modifications ocurred before writing to the settings and history files
|
||||||
|
// This avoids leaking information about VeraCrypt usage when user only mount volumes without changing setttings or history
|
||||||
|
BOOL bSettingsChanged = FALSE;
|
||||||
|
BOOL bHistoryChanged = FALSE;
|
||||||
|
|
||||||
|
LoadSettingsAndCheckModified (hwndDlg, TRUE, &bSettingsChanged, &bHistoryChanged);
|
||||||
|
|
||||||
|
if (bHistoryChanged && hwndDlg != NULL)
|
||||||
DumpCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), !bHistory);
|
DumpCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), !bHistory);
|
||||||
|
|
||||||
ConfigWriteBegin ();
|
if (bSettingsChanged)
|
||||||
|
{
|
||||||
|
ConfigWriteBegin ();
|
||||||
|
|
||||||
ConfigWriteInt ("StartOnLogon", bStartOnLogon);
|
ConfigWriteInt ("StartOnLogon", bStartOnLogon);
|
||||||
ConfigWriteInt ("HiddenSectorDetectionStatus", HiddenSectorDetectionStatus);
|
ConfigWriteInt ("HiddenSectorDetectionStatus", HiddenSectorDetectionStatus);
|
||||||
ConfigWriteInt ("SaveVolumeHistory", bHistory);
|
ConfigWriteInt ("SaveVolumeHistory", bHistory);
|
||||||
ConfigWriteString ("SecurityTokenLibrary", SecurityTokenLibraryPath[0] ? SecurityTokenLibraryPath : "");
|
ConfigWriteString ("SecurityTokenLibrary", SecurityTokenLibraryPath[0] ? SecurityTokenLibraryPath : "");
|
||||||
|
|
||||||
if (GetPreferredLangId () != NULL)
|
if (GetPreferredLangId () != NULL)
|
||||||
ConfigWriteString ("Language", GetPreferredLangId ());
|
ConfigWriteString ("Language", GetPreferredLangId ());
|
||||||
|
|
||||||
ConfigWriteEnd (hwndDlg);
|
ConfigWriteEnd (hwndDlg);
|
||||||
|
}
|
||||||
|
|
||||||
NormalCursor ();
|
NormalCursor ();
|
||||||
}
|
}
|
||||||
@@ -3783,7 +3835,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
|
|||||||
|
|
||||||
SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_LIMITTEXT, TC_MAX_PATH, 0);
|
SendMessage (GetDlgItem (hwndDlg, IDC_COMBO_BOX), CB_LIMITTEXT, TC_MAX_PATH, 0);
|
||||||
|
|
||||||
LoadCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX));
|
LoadCombo (GetDlgItem (hwndDlg, IDC_COMBO_BOX), bHistory, FALSE, NULL);
|
||||||
|
|
||||||
SendMessage (GetDlgItem (hwndDlg, IDC_NO_HISTORY), BM_SETCHECK, bHistory ? BST_UNCHECKED : BST_CHECKED, 0);
|
SendMessage (GetDlgItem (hwndDlg, IDC_NO_HISTORY), BM_SETCHECK, bHistory ? BST_UNCHECKED : BST_CHECKED, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -634,16 +634,57 @@ static string ResolveAmbiguousSelection (HWND hwndDlg, int *driveNoPtr)
|
|||||||
return retPath;
|
return retPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ConfigReadCompareInt(char *configKey, int defaultValue, int* pOutputValue, BOOL bOnlyCheckModified, BOOL* pbModified)
|
||||||
void LoadSettings (HWND hwndDlg)
|
|
||||||
{
|
{
|
||||||
EnableHwEncryption ((ReadDriverConfigurationFlags() & TC_DRIVER_CONFIG_DISABLE_HARDWARE_ENCRYPTION) ? FALSE : TRUE);
|
int intValue = ConfigReadInt (configKey, defaultValue);
|
||||||
|
if (pOutputValue)
|
||||||
|
{
|
||||||
|
if (pbModified && (*pOutputValue != intValue))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
*pOutputValue = intValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ConfigReadCompareString (char *configKey, char *defaultValue, char *str, int maxLen, BOOL bOnlyCheckModified, BOOL *pbModified)
|
||||||
|
{
|
||||||
|
char *strValue = (char*) malloc (maxLen);
|
||||||
|
if (strValue)
|
||||||
|
{
|
||||||
|
memcpy (strValue, str, maxLen);
|
||||||
|
|
||||||
|
ConfigReadString (configKey, defaultValue, strValue, maxLen);
|
||||||
|
|
||||||
|
if (pbModified && strcmp (str, strValue))
|
||||||
|
*pbModified = TRUE;
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
memcpy(str, strValue, maxLen);
|
||||||
|
|
||||||
|
free (strValue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* allocation failed. Suppose that value changed */
|
||||||
|
if (pbModified)
|
||||||
|
*pbModified = TRUE;
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
ConfigReadString (configKey, defaultValue, str, maxLen);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadSettingsAndCheckModified (HWND hwndDlg, BOOL bOnlyCheckModified, BOOL* pbSettingsModified, BOOL* pbHistoryModified)
|
||||||
|
{
|
||||||
|
char langid[6] = {0};
|
||||||
|
if (!bOnlyCheckModified)
|
||||||
|
EnableHwEncryption ((ReadDriverConfigurationFlags() & TC_DRIVER_CONFIG_DISABLE_HARDWARE_ENCRYPTION) ? FALSE : TRUE);
|
||||||
|
|
||||||
WipeAlgorithmId savedWipeAlgorithm = TC_WIPE_NONE;
|
WipeAlgorithmId savedWipeAlgorithm = TC_WIPE_NONE;
|
||||||
|
|
||||||
LoadSysEncSettings (hwndDlg);
|
if (!bOnlyCheckModified)
|
||||||
|
LoadSysEncSettings (hwndDlg);
|
||||||
|
|
||||||
if (LoadNonSysInPlaceEncSettings (&savedWipeAlgorithm) != 0)
|
if (!bOnlyCheckModified && LoadNonSysInPlaceEncSettings (&savedWipeAlgorithm) != 0)
|
||||||
bInPlaceEncNonSysPending = TRUE;
|
bInPlaceEncNonSysPending = TRUE;
|
||||||
|
|
||||||
// If the config file has already been loaded during this session
|
// If the config file has already been loaded during this session
|
||||||
@@ -654,188 +695,231 @@ void LoadSettings (HWND hwndDlg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Options
|
// Options
|
||||||
bExplore = ConfigReadInt ("OpenExplorerWindowAfterMount", FALSE);
|
ConfigReadCompareInt ("OpenExplorerWindowAfterMount", FALSE, &bExplore, bOnlyCheckModified, pbSettingsModified);
|
||||||
bUseDifferentTrayIconIfVolMounted = ConfigReadInt ("UseDifferentTrayIconIfVolumesMounted", TRUE);
|
ConfigReadCompareInt ("UseDifferentTrayIconIfVolumesMounted", TRUE, &bUseDifferentTrayIconIfVolMounted, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bHistory = ConfigReadInt ("SaveVolumeHistory", FALSE);
|
ConfigReadCompareInt ("SaveVolumeHistory", FALSE, &bHistory, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bCacheInDriverDefault = bCacheInDriver = ConfigReadInt ("CachePasswords", FALSE);
|
ConfigReadCompareInt ("CachePasswords", FALSE, &bCacheInDriverDefault, bOnlyCheckModified, pbSettingsModified);
|
||||||
bCacheDuringMultipleMount = ConfigReadInt ("CachePasswordDuringMultipleMount", FALSE);
|
ConfigReadCompareInt ("CachePasswordDuringMultipleMount", FALSE, &bCacheDuringMultipleMount, bOnlyCheckModified, pbSettingsModified);
|
||||||
bWipeCacheOnExit = ConfigReadInt ("WipePasswordCacheOnExit", FALSE);
|
ConfigReadCompareInt ("WipePasswordCacheOnExit", FALSE, &bWipeCacheOnExit, bOnlyCheckModified, pbSettingsModified);
|
||||||
bWipeCacheOnAutoDismount = ConfigReadInt ("WipeCacheOnAutoDismount", TRUE);
|
ConfigReadCompareInt ("WipeCacheOnAutoDismount", TRUE, &bWipeCacheOnAutoDismount, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bStartOnLogon = ConfigReadInt ("StartOnLogon", FALSE);
|
ConfigReadCompareInt ("StartOnLogon", FALSE, &bStartOnLogon, bOnlyCheckModified, pbSettingsModified);
|
||||||
bMountDevicesOnLogon = ConfigReadInt ("MountDevicesOnLogon", FALSE);
|
ConfigReadCompareInt ("MountDevicesOnLogon", FALSE, &bMountDevicesOnLogon, bOnlyCheckModified, pbSettingsModified);
|
||||||
bMountFavoritesOnLogon = ConfigReadInt ("MountFavoritesOnLogon", FALSE);
|
ConfigReadCompareInt ("MountFavoritesOnLogon", FALSE, &bMountFavoritesOnLogon, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bEnableBkgTask = ConfigReadInt ("EnableBackgroundTask", TRUE);
|
ConfigReadCompareInt ("EnableBackgroundTask", TRUE, &bEnableBkgTask, bOnlyCheckModified, pbSettingsModified);
|
||||||
bCloseBkgTaskWhenNoVolumes = ConfigReadInt ("CloseBackgroundTaskOnNoVolumes", FALSE);
|
ConfigReadCompareInt ("CloseBackgroundTaskOnNoVolumes", FALSE, &bCloseBkgTaskWhenNoVolumes, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bDismountOnLogOff = ConfigReadInt ("DismountOnLogOff", !(IsServerOS() && IsAdmin()));
|
ConfigReadCompareInt ("DismountOnLogOff", !(IsServerOS() && IsAdmin()), &bDismountOnLogOff, bOnlyCheckModified, pbSettingsModified);
|
||||||
bDismountOnSessionLocked = ConfigReadInt ("DismountOnSessionLocked", FALSE);
|
ConfigReadCompareInt ("DismountOnSessionLocked", FALSE, &bDismountOnSessionLocked, bOnlyCheckModified, pbSettingsModified);
|
||||||
bDismountOnPowerSaving = ConfigReadInt ("DismountOnPowerSaving", FALSE);
|
ConfigReadCompareInt ("DismountOnPowerSaving", FALSE, &bDismountOnPowerSaving, bOnlyCheckModified, pbSettingsModified);
|
||||||
bDismountOnScreenSaver = ConfigReadInt ("DismountOnScreenSaver", FALSE);
|
ConfigReadCompareInt ("DismountOnScreenSaver", FALSE, &bDismountOnScreenSaver, bOnlyCheckModified, pbSettingsModified);
|
||||||
bForceAutoDismount = ConfigReadInt ("ForceAutoDismount", TRUE);
|
ConfigReadCompareInt ("ForceAutoDismount", TRUE, &bForceAutoDismount, bOnlyCheckModified, pbSettingsModified);
|
||||||
MaxVolumeIdleTime = ConfigReadInt ("MaxVolumeIdleTime", -60);
|
ConfigReadCompareInt ("MaxVolumeIdleTime", -60, &MaxVolumeIdleTime, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
HiddenSectorDetectionStatus = ConfigReadInt ("HiddenSectorDetectionStatus", 0);
|
ConfigReadCompareInt ("HiddenSectorDetectionStatus", 0, &HiddenSectorDetectionStatus, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
defaultKeyFilesParam.EnableKeyFiles = ConfigReadInt ("UseKeyfiles", FALSE);
|
ConfigReadCompareInt ("UseKeyfiles", FALSE, &defaultKeyFilesParam.EnableKeyFiles, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
bPreserveTimestamp = defaultMountOptions.PreserveTimestamp = ConfigReadInt ("PreserveTimestamps", TRUE);
|
ConfigReadCompareInt ("PreserveTimestamps", TRUE, &defaultMountOptions.PreserveTimestamp, bOnlyCheckModified, pbSettingsModified);
|
||||||
defaultMountOptions.Removable = ConfigReadInt ("MountVolumesRemovable", FALSE);
|
if (!bOnlyCheckModified)
|
||||||
defaultMountOptions.ReadOnly = ConfigReadInt ("MountVolumesReadOnly", FALSE);
|
bPreserveTimestamp = defaultMountOptions.PreserveTimestamp;
|
||||||
defaultMountOptions.ProtectHiddenVolume = FALSE;
|
|
||||||
defaultMountOptions.ProtectedHidVolPkcs5Prf = 0;
|
|
||||||
defaultMountOptions.ProtectedHidVolPin = 0;
|
|
||||||
defaultMountOptions.PartitionInInactiveSysEncScope = FALSE;
|
|
||||||
defaultMountOptions.RecoveryMode = FALSE;
|
|
||||||
defaultMountOptions.UseBackupHeader = FALSE;
|
|
||||||
|
|
||||||
mountOptions = defaultMountOptions;
|
ConfigReadCompareInt ("MountVolumesRemovable", FALSE, &defaultMountOptions.Removable, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
ConfigReadCompareInt ("MountVolumesReadOnly", FALSE, &defaultMountOptions.ReadOnly, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
CloseSecurityTokenSessionsAfterMount = ConfigReadInt ("CloseSecurityTokenSessionsAfterMount", 0);
|
if (!bOnlyCheckModified)
|
||||||
|
{
|
||||||
|
defaultMountOptions.ProtectHiddenVolume = FALSE;
|
||||||
|
defaultMountOptions.ProtectedHidVolPkcs5Prf = 0;
|
||||||
|
defaultMountOptions.ProtectedHidVolPin = 0;
|
||||||
|
defaultMountOptions.PartitionInInactiveSysEncScope = FALSE;
|
||||||
|
defaultMountOptions.RecoveryMode = FALSE;
|
||||||
|
defaultMountOptions.UseBackupHeader = FALSE;
|
||||||
|
|
||||||
|
mountOptions = defaultMountOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigReadCompareInt ("CloseSecurityTokenSessionsAfterMount", 0, &CloseSecurityTokenSessionsAfterMount, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
if (IsHiddenOSRunning())
|
if (IsHiddenOSRunning())
|
||||||
HiddenSysLeakProtectionNotificationStatus = ConfigReadInt ("HiddenSystemLeakProtNotifStatus", TC_HIDDEN_OS_READ_ONLY_NOTIF_MODE_NONE);
|
ConfigReadCompareInt ("HiddenSystemLeakProtNotifStatus", TC_HIDDEN_OS_READ_ONLY_NOTIF_MODE_NONE, &HiddenSysLeakProtectionNotificationStatus, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
// Drive letter - command line arg overrides registry
|
// Drive letter - command line arg overrides registry
|
||||||
if (szDriveLetter[0] == 0)
|
if (!bOnlyCheckModified && szDriveLetter[0] == 0)
|
||||||
ConfigReadString ("LastSelectedDrive", "", szDriveLetter, sizeof (szDriveLetter));
|
ConfigReadString ("LastSelectedDrive", "", szDriveLetter, sizeof (szDriveLetter));
|
||||||
|
if (bHistory && pbSettingsModified)
|
||||||
|
{
|
||||||
|
// only check for last drive modification if history enabled
|
||||||
|
char szTmp[32] = {0};
|
||||||
|
LPARAM lLetter;
|
||||||
|
lLetter = GetSelectedLong (GetDlgItem (hwndDlg, IDC_DRIVELIST));
|
||||||
|
if (LOWORD (lLetter) != 0xffff)
|
||||||
|
StringCbPrintfA (szTmp, sizeof(szTmp), "%c:", (char) HIWORD (lLetter));
|
||||||
|
|
||||||
ConfigReadString ("SecurityTokenLibrary", "", SecurityTokenLibraryPath, sizeof (SecurityTokenLibraryPath) - 1);
|
ConfigReadCompareString ("LastSelectedDrive", "", szDriveLetter, sizeof (szDriveLetter), bOnlyCheckModified, pbSettingsModified);
|
||||||
if (SecurityTokenLibraryPath[0])
|
}
|
||||||
|
|
||||||
|
ConfigReadCompareString ("SecurityTokenLibrary", "", SecurityTokenLibraryPath, sizeof (SecurityTokenLibraryPath) - 1, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
if (!bOnlyCheckModified && SecurityTokenLibraryPath[0])
|
||||||
InitSecurityTokenLibrary(hwndDlg);
|
InitSecurityTokenLibrary(hwndDlg);
|
||||||
|
|
||||||
// Hotkeys
|
// Hotkeys
|
||||||
bPlaySoundOnSuccessfulHkDismount = ConfigReadInt ("PlaySoundOnHotkeyMountDismount", TRUE);
|
ConfigReadCompareInt ("PlaySoundOnHotkeyMountDismount", TRUE, &bPlaySoundOnSuccessfulHkDismount, bOnlyCheckModified, pbSettingsModified);
|
||||||
bDisplayBalloonOnSuccessfulHkDismount = ConfigReadInt ("DisplayMsgBoxOnHotkeyDismount", TRUE);
|
ConfigReadCompareInt ("DisplayMsgBoxOnHotkeyDismount", TRUE, &bDisplayBalloonOnSuccessfulHkDismount, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_AUTOMOUNT_DEVICES].vKeyModifiers = ConfigReadInt ("HotkeyModAutoMountDevices", 0);
|
ConfigReadCompareInt ("HotkeyModAutoMountDevices", 0, (int*) &Hotkeys [HK_AUTOMOUNT_DEVICES].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_AUTOMOUNT_DEVICES].vKeyCode = ConfigReadInt ("HotkeyCodeAutoMountDevices", 0);
|
ConfigReadCompareInt ("HotkeyCodeAutoMountDevices", 0, (int*) &Hotkeys [HK_AUTOMOUNT_DEVICES].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_DISMOUNT_ALL].vKeyModifiers = ConfigReadInt ("HotkeyModDismountAll", 0);
|
ConfigReadCompareInt ("HotkeyModDismountAll", 0, (int*) &Hotkeys [HK_DISMOUNT_ALL].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_DISMOUNT_ALL].vKeyCode = ConfigReadInt ("HotkeyCodeDismountAll", 0);
|
ConfigReadCompareInt ("HotkeyCodeDismountAll", 0, (int*) &Hotkeys [HK_DISMOUNT_ALL].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_WIPE_CACHE].vKeyModifiers = ConfigReadInt ("HotkeyModWipeCache", 0);
|
ConfigReadCompareInt ("HotkeyModWipeCache", 0, (int*) &Hotkeys [HK_WIPE_CACHE].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_WIPE_CACHE].vKeyCode = ConfigReadInt ("HotkeyCodeWipeCache", 0);
|
ConfigReadCompareInt ("HotkeyCodeWipeCache", 0, (int*) &Hotkeys [HK_WIPE_CACHE].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_DISMOUNT_ALL_AND_WIPE].vKeyModifiers = ConfigReadInt ("HotkeyModDismountAllWipe", 0);
|
ConfigReadCompareInt ("HotkeyModDismountAllWipe", 0, (int*) &Hotkeys [HK_DISMOUNT_ALL_AND_WIPE].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_DISMOUNT_ALL_AND_WIPE].vKeyCode = ConfigReadInt ("HotkeyCodeDismountAllWipe", 0);
|
ConfigReadCompareInt ("HotkeyCodeDismountAllWipe", 0, (int*) &Hotkeys [HK_DISMOUNT_ALL_AND_WIPE].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyModifiers = ConfigReadInt ("HotkeyModForceDismountAllWipe", 0);
|
ConfigReadCompareInt ("HotkeyModForceDismountAllWipe", 0, (int*) &Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyCode = ConfigReadInt ("HotkeyCodeForceDismountAllWipe", 0);
|
ConfigReadCompareInt ("HotkeyCodeForceDismountAllWipe", 0, (int*) &Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyModifiers = ConfigReadInt ("HotkeyModForceDismountAllWipeExit", 0);
|
ConfigReadCompareInt ("HotkeyModForceDismountAllWipeExit", 0, (int*) &Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyCode = ConfigReadInt ("HotkeyCodeForceDismountAllWipeExit", 0);
|
ConfigReadCompareInt ("HotkeyCodeForceDismountAllWipeExit", 0, (int*) &Hotkeys [HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_MOUNT_FAVORITE_VOLUMES].vKeyModifiers = ConfigReadInt ("HotkeyModMountFavoriteVolumes", 0);
|
ConfigReadCompareInt ("HotkeyModMountFavoriteVolumes", 0, (int*) &Hotkeys [HK_MOUNT_FAVORITE_VOLUMES].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_MOUNT_FAVORITE_VOLUMES].vKeyCode = ConfigReadInt ("HotkeyCodeMountFavoriteVolumes", 0);
|
ConfigReadCompareInt ("HotkeyCodeMountFavoriteVolumes", 0, (int*) &Hotkeys [HK_MOUNT_FAVORITE_VOLUMES].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_SHOW_HIDE_MAIN_WINDOW].vKeyModifiers = ConfigReadInt ("HotkeyModShowHideMainWindow", 0);
|
ConfigReadCompareInt ("HotkeyModShowHideMainWindow", 0, (int*) &Hotkeys [HK_SHOW_HIDE_MAIN_WINDOW].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_SHOW_HIDE_MAIN_WINDOW].vKeyCode = ConfigReadInt ("HotkeyCodeShowHideMainWindow", 0);
|
ConfigReadCompareInt ("HotkeyCodeShowHideMainWindow", 0, (int*) &Hotkeys [HK_SHOW_HIDE_MAIN_WINDOW].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyModifiers = ConfigReadInt ("HotkeyModCloseSecurityTokenSessions", 0);
|
ConfigReadCompareInt ("HotkeyModCloseSecurityTokenSessions", 0, (int*) &Hotkeys [HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyModifiers, bOnlyCheckModified, pbSettingsModified);
|
||||||
Hotkeys [HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyCode = ConfigReadInt ("HotkeyCodeCloseSecurityTokenSessions", 0);
|
ConfigReadCompareInt ("HotkeyCodeCloseSecurityTokenSessions", 0, (int*) &Hotkeys [HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyCode, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
// History
|
// History
|
||||||
if (bHistoryCmdLine != TRUE)
|
if (bHistoryCmdLine != TRUE)
|
||||||
{
|
{
|
||||||
LoadCombo (GetDlgItem (hwndDlg, IDC_VOLUME));
|
LoadCombo (GetDlgItem (hwndDlg, IDC_VOLUME), bHistory, bOnlyCheckModified, pbHistoryModified);
|
||||||
if (CmdLineVolumeSpecified)
|
if (!bOnlyCheckModified && CmdLineVolumeSpecified)
|
||||||
SetWindowText (GetDlgItem (hwndDlg, IDC_VOLUME), szFileName);
|
SetWindowText (GetDlgItem (hwndDlg, IDC_VOLUME), szFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mount Options
|
// Mount Options
|
||||||
DefaultVolumePkcs5 = ConfigReadInt ("DefaultPRF", 0);
|
ConfigReadCompareInt ("DefaultPRF", 0, &DefaultVolumePkcs5, bOnlyCheckModified, pbSettingsModified);
|
||||||
DefaultVolumeTrueCryptMode = ConfigReadInt ("DefaultTrueCryptMode", FALSE);
|
ConfigReadCompareInt ("DefaultTrueCryptMode", FALSE, &DefaultVolumeTrueCryptMode, bOnlyCheckModified, pbSettingsModified);
|
||||||
|
|
||||||
|
if (bOnlyCheckModified)
|
||||||
|
{
|
||||||
|
StringCbCopyA (langid, sizeof(langid), GetPreferredLangId ());
|
||||||
|
ConfigReadCompareString ("Language", "", langid, sizeof (langid), TRUE, pbSettingsModified);
|
||||||
|
}
|
||||||
|
|
||||||
if (DefaultVolumePkcs5 < 0 || DefaultVolumePkcs5 > LAST_PRF_ID)
|
if (DefaultVolumePkcs5 < 0 || DefaultVolumePkcs5 > LAST_PRF_ID)
|
||||||
DefaultVolumePkcs5 = 0;
|
DefaultVolumePkcs5 = 0;
|
||||||
if (DefaultVolumeTrueCryptMode != TRUE && DefaultVolumeTrueCryptMode != FALSE)
|
if (DefaultVolumeTrueCryptMode != TRUE && DefaultVolumeTrueCryptMode != FALSE)
|
||||||
DefaultVolumeTrueCryptMode = FALSE;
|
DefaultVolumeTrueCryptMode = FALSE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadSettings ( HWND hwndDlg )
|
||||||
|
{
|
||||||
|
LoadSettingsAndCheckModified (hwndDlg, FALSE, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SaveSettings (HWND hwndDlg)
|
void SaveSettings (HWND hwndDlg)
|
||||||
{
|
{
|
||||||
WaitCursor ();
|
WaitCursor ();
|
||||||
|
|
||||||
char szTmp[32] = {0};
|
// Check first if modifications ocurred before writing to the settings and history files
|
||||||
LPARAM lLetter;
|
// This avoids leaking information about VeraCrypt usage when user only mount volumes without changing setttings or history
|
||||||
|
BOOL bSettingsChanged = FALSE;
|
||||||
|
BOOL bHistoryChanged = FALSE;
|
||||||
|
|
||||||
// Options
|
LoadSettingsAndCheckModified (hwndDlg, TRUE, &bSettingsChanged, &bHistoryChanged);
|
||||||
ConfigWriteBegin ();
|
|
||||||
|
|
||||||
ConfigWriteInt ("OpenExplorerWindowAfterMount", bExplore);
|
if (bSettingsChanged)
|
||||||
ConfigWriteInt ("UseDifferentTrayIconIfVolumesMounted", bUseDifferentTrayIconIfVolMounted);
|
{
|
||||||
ConfigWriteInt ("SaveVolumeHistory", !IsButtonChecked (GetDlgItem (hwndDlg, IDC_NO_HISTORY)));
|
char szTmp[32] = {0};
|
||||||
|
LPARAM lLetter;
|
||||||
|
|
||||||
ConfigWriteInt ("CachePasswords", bCacheInDriverDefault);
|
// Options
|
||||||
ConfigWriteInt ("CachePasswordDuringMultipleMount", bCacheDuringMultipleMount);
|
ConfigWriteBegin ();
|
||||||
ConfigWriteInt ("WipePasswordCacheOnExit", bWipeCacheOnExit);
|
|
||||||
ConfigWriteInt ("WipeCacheOnAutoDismount", bWipeCacheOnAutoDismount);
|
|
||||||
|
|
||||||
ConfigWriteInt ("StartOnLogon", bStartOnLogon);
|
ConfigWriteInt ("OpenExplorerWindowAfterMount", bExplore);
|
||||||
ConfigWriteInt ("MountDevicesOnLogon", bMountDevicesOnLogon);
|
ConfigWriteInt ("UseDifferentTrayIconIfVolumesMounted", bUseDifferentTrayIconIfVolMounted);
|
||||||
ConfigWriteInt ("MountFavoritesOnLogon", bMountFavoritesOnLogon);
|
ConfigWriteInt ("SaveVolumeHistory", !IsButtonChecked (GetDlgItem (hwndDlg, IDC_NO_HISTORY)));
|
||||||
|
|
||||||
ConfigWriteInt ("MountVolumesReadOnly", defaultMountOptions.ReadOnly);
|
ConfigWriteInt ("CachePasswords", bCacheInDriverDefault);
|
||||||
ConfigWriteInt ("MountVolumesRemovable", defaultMountOptions.Removable);
|
ConfigWriteInt ("CachePasswordDuringMultipleMount", bCacheDuringMultipleMount);
|
||||||
ConfigWriteInt ("PreserveTimestamps", defaultMountOptions.PreserveTimestamp);
|
ConfigWriteInt ("WipePasswordCacheOnExit", bWipeCacheOnExit);
|
||||||
|
ConfigWriteInt ("WipeCacheOnAutoDismount", bWipeCacheOnAutoDismount);
|
||||||
|
|
||||||
ConfigWriteInt ("EnableBackgroundTask", bEnableBkgTask);
|
ConfigWriteInt ("StartOnLogon", bStartOnLogon);
|
||||||
ConfigWriteInt ("CloseBackgroundTaskOnNoVolumes", bCloseBkgTaskWhenNoVolumes);
|
ConfigWriteInt ("MountDevicesOnLogon", bMountDevicesOnLogon);
|
||||||
|
ConfigWriteInt ("MountFavoritesOnLogon", bMountFavoritesOnLogon);
|
||||||
|
|
||||||
ConfigWriteInt ("DismountOnLogOff", bDismountOnLogOff);
|
ConfigWriteInt ("MountVolumesReadOnly", defaultMountOptions.ReadOnly);
|
||||||
ConfigWriteInt ("DismountOnSessionLocked", bDismountOnSessionLocked);
|
ConfigWriteInt ("MountVolumesRemovable", defaultMountOptions.Removable);
|
||||||
ConfigWriteInt ("DismountOnPowerSaving", bDismountOnPowerSaving);
|
ConfigWriteInt ("PreserveTimestamps", defaultMountOptions.PreserveTimestamp);
|
||||||
ConfigWriteInt ("DismountOnScreenSaver", bDismountOnScreenSaver);
|
|
||||||
ConfigWriteInt ("ForceAutoDismount", bForceAutoDismount);
|
|
||||||
ConfigWriteInt ("MaxVolumeIdleTime", MaxVolumeIdleTime);
|
|
||||||
|
|
||||||
ConfigWriteInt ("HiddenSectorDetectionStatus", HiddenSectorDetectionStatus);
|
ConfigWriteInt ("EnableBackgroundTask", bEnableBkgTask);
|
||||||
|
ConfigWriteInt ("CloseBackgroundTaskOnNoVolumes", bCloseBkgTaskWhenNoVolumes);
|
||||||
|
|
||||||
ConfigWriteInt ("UseKeyfiles", defaultKeyFilesParam.EnableKeyFiles);
|
ConfigWriteInt ("DismountOnLogOff", bDismountOnLogOff);
|
||||||
|
ConfigWriteInt ("DismountOnSessionLocked", bDismountOnSessionLocked);
|
||||||
|
ConfigWriteInt ("DismountOnPowerSaving", bDismountOnPowerSaving);
|
||||||
|
ConfigWriteInt ("DismountOnScreenSaver", bDismountOnScreenSaver);
|
||||||
|
ConfigWriteInt ("ForceAutoDismount", bForceAutoDismount);
|
||||||
|
ConfigWriteInt ("MaxVolumeIdleTime", MaxVolumeIdleTime);
|
||||||
|
|
||||||
if (IsHiddenOSRunning())
|
ConfigWriteInt ("HiddenSectorDetectionStatus", HiddenSectorDetectionStatus);
|
||||||
ConfigWriteInt ("HiddenSystemLeakProtNotifStatus", HiddenSysLeakProtectionNotificationStatus);
|
|
||||||
|
|
||||||
// Drive Letter
|
ConfigWriteInt ("UseKeyfiles", defaultKeyFilesParam.EnableKeyFiles);
|
||||||
lLetter = GetSelectedLong (GetDlgItem (hwndDlg, IDC_DRIVELIST));
|
|
||||||
if (LOWORD (lLetter) != 0xffff)
|
|
||||||
StringCbPrintfA (szTmp, sizeof(szTmp), "%c:", (char) HIWORD (lLetter));
|
|
||||||
ConfigWriteString ("LastSelectedDrive", szTmp);
|
|
||||||
|
|
||||||
ConfigWriteInt ("CloseSecurityTokenSessionsAfterMount", CloseSecurityTokenSessionsAfterMount);
|
if (IsHiddenOSRunning())
|
||||||
|
ConfigWriteInt ("HiddenSystemLeakProtNotifStatus", HiddenSysLeakProtectionNotificationStatus);
|
||||||
|
|
||||||
// Hotkeys
|
// Drive Letter
|
||||||
ConfigWriteInt ("HotkeyModAutoMountDevices", Hotkeys[HK_AUTOMOUNT_DEVICES].vKeyModifiers);
|
lLetter = GetSelectedLong (GetDlgItem (hwndDlg, IDC_DRIVELIST));
|
||||||
ConfigWriteInt ("HotkeyCodeAutoMountDevices", Hotkeys[HK_AUTOMOUNT_DEVICES].vKeyCode);
|
if (LOWORD (lLetter) != 0xffff)
|
||||||
ConfigWriteInt ("HotkeyModDismountAll", Hotkeys[HK_DISMOUNT_ALL].vKeyModifiers);
|
StringCbPrintfA (szTmp, sizeof(szTmp), "%c:", (char) HIWORD (lLetter));
|
||||||
ConfigWriteInt ("HotkeyCodeDismountAll", Hotkeys[HK_DISMOUNT_ALL].vKeyCode);
|
ConfigWriteString ("LastSelectedDrive", szTmp);
|
||||||
ConfigWriteInt ("HotkeyModWipeCache", Hotkeys[HK_WIPE_CACHE].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeWipeCache", Hotkeys[HK_WIPE_CACHE].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModDismountAllWipe", Hotkeys[HK_DISMOUNT_ALL_AND_WIPE].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeDismountAllWipe", Hotkeys[HK_DISMOUNT_ALL_AND_WIPE].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModForceDismountAllWipe", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeForceDismountAllWipe", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModForceDismountAllWipeExit", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeForceDismountAllWipeExit", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModMountFavoriteVolumes", Hotkeys[HK_MOUNT_FAVORITE_VOLUMES].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeMountFavoriteVolumes", Hotkeys[HK_MOUNT_FAVORITE_VOLUMES].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModShowHideMainWindow", Hotkeys[HK_SHOW_HIDE_MAIN_WINDOW].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeShowHideMainWindow", Hotkeys[HK_SHOW_HIDE_MAIN_WINDOW].vKeyCode);
|
|
||||||
ConfigWriteInt ("HotkeyModCloseSecurityTokenSessions", Hotkeys[HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyModifiers);
|
|
||||||
ConfigWriteInt ("HotkeyCodeCloseSecurityTokenSessions", Hotkeys[HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyCode);
|
|
||||||
ConfigWriteInt ("PlaySoundOnHotkeyMountDismount", bPlaySoundOnSuccessfulHkDismount);
|
|
||||||
ConfigWriteInt ("DisplayMsgBoxOnHotkeyDismount", bDisplayBalloonOnSuccessfulHkDismount);
|
|
||||||
|
|
||||||
// Language
|
ConfigWriteInt ("CloseSecurityTokenSessionsAfterMount", CloseSecurityTokenSessionsAfterMount);
|
||||||
if (GetPreferredLangId () != NULL)
|
|
||||||
ConfigWriteString ("Language", GetPreferredLangId ());
|
|
||||||
|
|
||||||
// PKCS#11 Library Path
|
// Hotkeys
|
||||||
ConfigWriteString ("SecurityTokenLibrary", SecurityTokenLibraryPath[0] ? SecurityTokenLibraryPath : "");
|
ConfigWriteInt ("HotkeyModAutoMountDevices", Hotkeys[HK_AUTOMOUNT_DEVICES].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeAutoMountDevices", Hotkeys[HK_AUTOMOUNT_DEVICES].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModDismountAll", Hotkeys[HK_DISMOUNT_ALL].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeDismountAll", Hotkeys[HK_DISMOUNT_ALL].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModWipeCache", Hotkeys[HK_WIPE_CACHE].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeWipeCache", Hotkeys[HK_WIPE_CACHE].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModDismountAllWipe", Hotkeys[HK_DISMOUNT_ALL_AND_WIPE].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeDismountAllWipe", Hotkeys[HK_DISMOUNT_ALL_AND_WIPE].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModForceDismountAllWipe", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeForceDismountAllWipe", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModForceDismountAllWipeExit", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeForceDismountAllWipeExit", Hotkeys[HK_FORCE_DISMOUNT_ALL_AND_WIPE_AND_EXIT].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModMountFavoriteVolumes", Hotkeys[HK_MOUNT_FAVORITE_VOLUMES].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeMountFavoriteVolumes", Hotkeys[HK_MOUNT_FAVORITE_VOLUMES].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModShowHideMainWindow", Hotkeys[HK_SHOW_HIDE_MAIN_WINDOW].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeShowHideMainWindow", Hotkeys[HK_SHOW_HIDE_MAIN_WINDOW].vKeyCode);
|
||||||
|
ConfigWriteInt ("HotkeyModCloseSecurityTokenSessions", Hotkeys[HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyModifiers);
|
||||||
|
ConfigWriteInt ("HotkeyCodeCloseSecurityTokenSessions", Hotkeys[HK_CLOSE_SECURITY_TOKEN_SESSIONS].vKeyCode);
|
||||||
|
ConfigWriteInt ("PlaySoundOnHotkeyMountDismount", bPlaySoundOnSuccessfulHkDismount);
|
||||||
|
ConfigWriteInt ("DisplayMsgBoxOnHotkeyDismount", bDisplayBalloonOnSuccessfulHkDismount);
|
||||||
|
|
||||||
// Mount Options
|
// Language
|
||||||
ConfigWriteInt ("DefaultPRF", DefaultVolumePkcs5);
|
if (GetPreferredLangId () != NULL)
|
||||||
ConfigWriteInt ("DefaultTrueCryptMode", DefaultVolumeTrueCryptMode);
|
ConfigWriteString ("Language", GetPreferredLangId ());
|
||||||
|
|
||||||
ConfigWriteEnd (hwndDlg);
|
// PKCS#11 Library Path
|
||||||
|
ConfigWriteString ("SecurityTokenLibrary", SecurityTokenLibraryPath[0] ? SecurityTokenLibraryPath : "");
|
||||||
|
|
||||||
// History
|
// Mount Options
|
||||||
DumpCombo (GetDlgItem (hwndDlg, IDC_VOLUME), IsButtonChecked (GetDlgItem (hwndDlg, IDC_NO_HISTORY)));
|
ConfigWriteInt ("DefaultPRF", DefaultVolumePkcs5);
|
||||||
|
ConfigWriteInt ("DefaultTrueCryptMode", DefaultVolumeTrueCryptMode);
|
||||||
|
|
||||||
|
ConfigWriteEnd (hwndDlg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bHistoryChanged)
|
||||||
|
{
|
||||||
|
// History
|
||||||
|
DumpCombo (GetDlgItem (hwndDlg, IDC_VOLUME), IsButtonChecked (GetDlgItem (hwndDlg, IDC_NO_HISTORY)));
|
||||||
|
}
|
||||||
|
|
||||||
NormalCursor ();
|
NormalCursor ();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user