diff --git a/include/global/NekoGui_DataStore.hpp b/include/global/NekoGui_DataStore.hpp index c7c6644..dd59de0 100644 --- a/include/global/NekoGui_DataStore.hpp +++ b/include/global/NekoGui_DataStore.hpp @@ -97,6 +97,7 @@ namespace NekoGui { // Security bool skip_cert = false; QString utlsFingerprint = ""; + bool disable_run_admin = false; // windows only // Remember QStringList remember_spmode = {}; diff --git a/include/ui/setting/dialog_basic_settings.ui b/include/ui/setting/dialog_basic_settings.ui index 668fdb0..13e5cbc 100644 --- a/include/ui/setting/dialog_basic_settings.ui +++ b/include/ui/setting/dialog_basic_settings.ui @@ -833,6 +833,16 @@ + + + + <html><head/><body><p>Do not attempt to start as Admin unless explicitly requested</p></body></html> + + + Always Start as Standard User + + + diff --git a/src/global/NekoGui.cpp b/src/global/NekoGui.cpp index ab711bc..65e8777 100644 --- a/src/global/NekoGui.cpp +++ b/src/global/NekoGui.cpp @@ -303,6 +303,7 @@ namespace NekoGui { _add(new configItem("redirect_listen_port", &redirect_listen_port, itemType::integer)); _add(new configItem("system_dns_set", &system_dns_set, itemType::boolean)); _add(new configItem("windows_set_admin", &windows_set_admin, itemType::boolean)); + _add(new configItem("disable_win_admin", &disable_run_admin, itemType::boolean)); _add(new configItem("enable_stats", &enable_stats, itemType::boolean)); _add(new configItem("stats_tab", &stats_tab, itemType::string)); _add(new configItem("proxy_scheme", &proxy_scheme, itemType::string)); diff --git a/src/main.cpp b/src/main.cpp index 6346cfa..14ad17c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -157,7 +157,7 @@ int main(int argc, char* argv[]) { } #ifdef Q_OS_WIN - if (NekoGui::dataStore->windows_set_admin && !NekoGui::IsAdmin()) + if (NekoGui::dataStore->windows_set_admin && !NekoGui::IsAdmin() && !NekoGui::dataStore->disable_run_admin) { NekoGui::dataStore->windows_set_admin = false; // so that if permission denied, we will run as user on the next run NekoGui::dataStore->Save(); diff --git a/src/ui/setting/dialog_basic_settings.cpp b/src/ui/setting/dialog_basic_settings.cpp index 67abc34..d2629b7 100644 --- a/src/ui/setting/dialog_basic_settings.cpp +++ b/src/ui/setting/dialog_basic_settings.cpp @@ -41,6 +41,7 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent) #ifndef Q_OS_WIN ui->proxy_scheme_box->hide(); + ui->windows_no_admin->hide(); #endif // Style @@ -149,6 +150,7 @@ DialogBasicSettings::DialogBasicSettings(QWidget *parent) ui->utlsFingerprint->addItems(Preset::SingBox::UtlsFingerPrint); ui->disable_priv_req->setChecked(NekoGui::dataStore->disable_privilege_req); + ui->windows_no_admin->setChecked(NekoGui::dataStore->disable_run_admin); D_LOAD_BOOL(skip_cert) ui->utlsFingerprint->setCurrentText(NekoGui::dataStore->utlsFingerprint); @@ -219,6 +221,7 @@ void DialogBasicSettings::accept() { D_SAVE_BOOL(skip_cert) NekoGui::dataStore->utlsFingerprint = ui->utlsFingerprint->currentText(); NekoGui::dataStore->disable_privilege_req = ui->disable_priv_req->isChecked(); + NekoGui::dataStore->disable_run_admin = ui->windows_no_admin->isChecked(); QStringList str{"UpdateDataStore"}; if (CACHE.needRestart) str << "NeedRestart";