forked from Green-Sky/tomato
add system check and block on new windows versions
This commit is contained in:
parent
a2001b34ea
commit
6b96be7a57
@ -13,6 +13,9 @@ target_sources(tomato PUBLIC
|
|||||||
./main.cpp
|
./main.cpp
|
||||||
./icon.rc
|
./icon.rc
|
||||||
|
|
||||||
|
./sys_check.hpp
|
||||||
|
./sys_check.cpp
|
||||||
|
|
||||||
./json_to_config.hpp
|
./json_to_config.hpp
|
||||||
./json_to_config.cpp
|
./json_to_config.cpp
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
#include "./theme.hpp"
|
#include "./theme.hpp"
|
||||||
#include "./chat_gui/theme.hpp"
|
#include "./chat_gui/theme.hpp"
|
||||||
|
|
||||||
|
#include "./sys_check.hpp"
|
||||||
|
|
||||||
#include "./start_screen.hpp"
|
#include "./start_screen.hpp"
|
||||||
|
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
@ -24,6 +26,8 @@ int main(int argc, char** argv) {
|
|||||||
args.push_back(argv[i]);
|
args.push_back(argv[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
runSysCheck();
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
// change current working dir to internal storage
|
// change current working dir to internal storage
|
||||||
std::filesystem::current_path(SDL_AndroidGetInternalStoragePath());
|
std::filesystem::current_path(SDL_AndroidGetInternalStoragePath());
|
||||||
|
46
src/sys_check.cpp
Normal file
46
src/sys_check.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include "./sys_check.hpp"
|
||||||
|
|
||||||
|
// use message boxes to notify the user of system failure
|
||||||
|
#include <SDL3/SDL.h>
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#if defined(_WIN32) || defined(WIN32)
|
||||||
|
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
typedef LONG NTSTATUS, *PNTSTATUS;
|
||||||
|
#define STATUS_SUCCESS (0x00000000)
|
||||||
|
|
||||||
|
void runSysCheck(void) {
|
||||||
|
NTSTATUS(WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW);
|
||||||
|
OSVERSIONINFOEXW osInfo;
|
||||||
|
|
||||||
|
*(FARPROC*)&RtlGetVersion = GetProcAddress(GetModuleHandleA("ntdll"), "RtlGetVersion");
|
||||||
|
|
||||||
|
if (NULL != RtlGetVersion) {
|
||||||
|
osInfo.dwOSVersionInfoSize = sizeof(osInfo);
|
||||||
|
RtlGetVersion(&osInfo);
|
||||||
|
|
||||||
|
// check
|
||||||
|
if (
|
||||||
|
osInfo.dwBuildNumber >= 26000 // canary versions of 11 24H2 included
|
||||||
|
) {
|
||||||
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Unsupported System", "Your version of windows is too new and endangers the privacy of all involved.", nullptr);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void runSysCheck(void) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
4
src/sys_check.hpp
Normal file
4
src/sys_check.hpp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// perform system checks and potentially terminate
|
||||||
|
void runSysCheck(void);
|
Loading…
Reference in New Issue
Block a user