fix: make tun stack setting unchangeable on legacy windows

This commit is contained in:
parhelia512 2025-08-03 04:06:50 +08:00
parent 42bbbe8005
commit 147173ff4c
3 changed files with 20 additions and 1 deletions

View File

@ -1,6 +1,9 @@
// DO NOT INCLUDE THIS // DO NOT INCLUDE THIS
#include "Const.hpp" #include "Const.hpp"
#ifdef Q_OS_WIN
#include "include/sys/windows/WinVersion.h"
#endif
namespace Configs { namespace Configs {
@ -123,6 +126,8 @@ namespace Configs {
bool enable_tun_routing = false; bool enable_tun_routing = false;
#ifdef Q_OS_MACOS #ifdef Q_OS_MACOS
QString vpn_implementation = "gvisor"; QString vpn_implementation = "gvisor";
#elif defined(Q_OS_WIN)
QString vpn_implementation = WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1507) ? "system" : "gvisor";
#else #else
QString vpn_implementation = "system"; QString vpn_implementation = "system";
#endif #endif

View File

@ -2442,7 +2442,7 @@ void MainWindow::CheckUpdate() {
if (WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1809)) if (WinVersion::IsBuildNumGreaterOrEqual(BuildNumber::Windows_10_1809))
search = "windows64"; search = "windows64";
else else
search = "windowslegacy64"; search = "windowslegacy64";
# else # else
search = "windows32"; search = "windows32";
# endif # endif

View File

@ -4,6 +4,9 @@
#include "include/global/GuiUtils.hpp" #include "include/global/GuiUtils.hpp"
#include "include/global/Configs.hpp" #include "include/global/Configs.hpp"
#include "include/ui/mainwindow_interface.h" #include "include/ui/mainwindow_interface.h"
#ifdef Q_OS_WIN
#include "include/sys/windows/WinVersion.h"
#endif
#include <QMessageBox> #include <QMessageBox>
#define ADJUST_SIZE runOnThread([=] { adjustSize(); adjustPosition(mainwindow); }, this); #define ADJUST_SIZE runOnThread([=] { adjustSize(); adjustPosition(mainwindow); }, this);
@ -11,8 +14,19 @@ DialogVPNSettings::DialogVPNSettings(QWidget *parent) : QDialog(parent), ui(new
ui->setupUi(this); ui->setupUi(this);
ADD_ASTERISK(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->addItems(Preset::SingBox::VpnImplementation);
ui->vpn_implementation->setCurrentText(Configs::dataStore->vpn_implementation); ui->vpn_implementation->setCurrentText(Configs::dataStore->vpn_implementation);
#endif
ui->vpn_mtu->setCurrentText(Int2String(Configs::dataStore->vpn_mtu)); ui->vpn_mtu->setCurrentText(Int2String(Configs::dataStore->vpn_mtu));
ui->vpn_ipv6->setChecked(Configs::dataStore->vpn_ipv6); ui->vpn_ipv6->setChecked(Configs::dataStore->vpn_ipv6);
ui->strict_route->setChecked(Configs::dataStore->vpn_strict_route); ui->strict_route->setChecked(Configs::dataStore->vpn_strict_route);