diff --git a/include/global/DataStore.hpp b/include/global/DataStore.hpp index 7878161..c06b2e6 100644 --- a/include/global/DataStore.hpp +++ b/include/global/DataStore.hpp @@ -1,6 +1,9 @@ // DO NOT INCLUDE THIS #include "Const.hpp" +#ifdef Q_OS_WIN +#include "include/sys/windows/WinVersion.h" +#endif namespace Configs { @@ -123,6 +126,8 @@ namespace Configs { bool enable_tun_routing = false; #ifdef Q_OS_MACOS QString vpn_implementation = "gvisor"; +#elif defined(Q_OS_WIN) + QString vpn_implementation = WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1507) ? "system" : "gvisor"; #else QString vpn_implementation = "system"; #endif diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 56d6a4e..b0501eb 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -2442,7 +2442,7 @@ void MainWindow::CheckUpdate() { if (WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1809)) search = "windows64"; else - search = "windowslegacy64"; + search = "windowslegacy64"; # else search = "windows32"; # endif diff --git a/src/ui/setting/dialog_vpn_settings.cpp b/src/ui/setting/dialog_vpn_settings.cpp index 9925df0..e9ba694 100644 --- a/src/ui/setting/dialog_vpn_settings.cpp +++ b/src/ui/setting/dialog_vpn_settings.cpp @@ -4,6 +4,9 @@ #include "include/global/GuiUtils.hpp" #include "include/global/Configs.hpp" #include "include/ui/mainwindow_interface.h" +#ifdef Q_OS_WIN +#include "include/sys/windows/WinVersion.h" +#endif #include #define ADJUST_SIZE runOnThread([=] { adjustSize(); adjustPosition(mainwindow); }, this); @@ -11,8 +14,19 @@ DialogVPNSettings::DialogVPNSettings(QWidget *parent) : QDialog(parent), ui(new ui->setupUi(this); ADD_ASTERISK(this); +#ifdef Q_OS_WIN + if (WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1507)) { + ui->vpn_implementation->addItems(Preset::SingBox::VpnImplementation); + ui->vpn_implementation->setCurrentText(Configs::dataStore->vpn_implementation); + } + else { + ui->vpn_implementation->setCurrentText("gvisor"); + ui->vpn_implementation->setEnabled(false); + } +#else ui->vpn_implementation->addItems(Preset::SingBox::VpnImplementation); ui->vpn_implementation->setCurrentText(Configs::dataStore->vpn_implementation); +#endif ui->vpn_mtu->setCurrentText(Int2String(Configs::dataStore->vpn_mtu)); ui->vpn_ipv6->setChecked(Configs::dataStore->vpn_ipv6); ui->strict_route->setChecked(Configs::dataStore->vpn_strict_route);