1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-11 02:58:02 -06:00

Windows: Update Windows version check on startup to require Win10 1809 or later

- Add IsWin10BuildAtLeast() helper function to check Windows 10 build numbers
- Replace direct build number comparison with IsWin10BuildAtLeast() for ReflectDrivers check
- Update error message to be more specific about Windows version requirement
This commit is contained in:
Mounir IDRASSI
2024-12-25 17:00:37 +01:00
parent 81f0adcc35
commit d9e17522ee
3 changed files with 22 additions and 4 deletions

View File

@@ -3202,7 +3202,7 @@ namespace VeraCrypt
void BootEncryption::UpdateSetupConfigFile (bool bForInstall) void BootEncryption::UpdateSetupConfigFile (bool bForInstall)
{ {
// starting from Windows 10 1607 (Build 14393), ReflectDrivers in Setupconfig.ini is supported // starting from Windows 10 1607 (Build 14393), ReflectDrivers in Setupconfig.ini is supported
if (IsOSVersionAtLeast (WIN_10, 0) && CurrentOSBuildNumber >= 14393) if (IsWin10BuildAtLeast(WIN_10_1607_BUILD))
{ {
wchar_t szInstallPath [TC_MAX_PATH]; wchar_t szInstallPath [TC_MAX_PATH];
wchar_t szSetupconfigLocation [TC_MAX_PATH + 20]; wchar_t szSetupconfigLocation [TC_MAX_PATH + 20];

View File

@@ -1046,6 +1046,20 @@ BOOL IsOSVersionAtLeast (OSVersionEnum reqMinOS, int reqMinServicePack)
>= (major << 16 | minor << 8 | reqMinServicePack)); >= (major << 16 | minor << 8 | reqMinServicePack));
} }
BOOL IsWin10BuildAtLeast(DWORD minBuild)
{
// Must first be recognized as Windows 10 or higher
if (nCurrentOS < WIN_10)
return FALSE;
// If were on Windows 10, check build number
if (nCurrentOS == WIN_10 && CurrentOSBuildNumber < minBuild)
return FALSE;
// If we are on a higher version of Windows, we are good to go
return TRUE;
}
#ifdef SETUP_DLL #ifdef SETUP_DLL
static BOOL GetWindowVersionFromFile(DWORD* pdwMajor, DWORD* pdwMinor, DWORD* pdwBuildNumber) static BOOL GetWindowVersionFromFile(DWORD* pdwMajor, DWORD* pdwMinor, DWORD* pdwBuildNumber)
{ {
@@ -3611,10 +3625,10 @@ void InitApp (HINSTANCE hInstance, wchar_t *lpszCommandLine)
InitOSVersionInfo(); InitOSVersionInfo();
if (!IsOSAtLeast (WIN_10)) if (!IsWin10BuildAtLeast(WIN_10_1809_BUILD))
{ {
// abort using a message that says that VeraCrypt can run only on Windows 10 and later // abort using a message that says that VeraCrypt can run only on Windows 10 version 1809 or later
AbortProcessDirect(L"VeraCrypt requires at least Windows 10 to run."); AbortProcessDirect(L"VeraCrypt requires at least Windows 10 version 1809 (October 2018 Update) to run.");
} }
if (!Is64BitOs()) if (!Is64BitOs())

View File

@@ -286,6 +286,9 @@ typedef NTSTATUS (WINAPI *NtQuerySystemInformationFn)(
#define ISO_BURNER_TOOL L"isoburn.exe" #define ISO_BURNER_TOOL L"isoburn.exe"
#define PRINT_TOOL L"notepad.exe" #define PRINT_TOOL L"notepad.exe"
#define WIN_10_1607_BUILD 14393 // Windows 10 version 1607 corresponds to build 14393
#define WIN_10_1809_BUILD 17763 // Windows 10 version 1809 corresponds to build 17763
void InitGlobalLocks (); void InitGlobalLocks ();
void FinalizeGlobalLocks (); void FinalizeGlobalLocks ();
void cleanup ( void ); void cleanup ( void );
@@ -500,6 +503,7 @@ void Debug (char *format, ...);
void DebugMsgBox (char *format, ...); void DebugMsgBox (char *format, ...);
BOOL IsOSAtLeast (OSVersionEnum reqMinOS); BOOL IsOSAtLeast (OSVersionEnum reqMinOS);
BOOL IsOSVersionAtLeast (OSVersionEnum reqMinOS, int reqMinServicePack); BOOL IsOSVersionAtLeast (OSVersionEnum reqMinOS, int reqMinServicePack);
BOOL IsWin10BuildAtLeast(DWORD minBuild);
BOOL IsSupportedOS (); BOOL IsSupportedOS ();
BOOL Is64BitOs (); BOOL Is64BitOs ();
BOOL IsARM(); BOOL IsARM();