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
#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

View File

@ -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

View File

@ -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 <QMessageBox>
#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);