add disable start as admin for windows

This commit is contained in:
Nova 2025-07-02 02:04:11 +03:30
parent fd4fcdae1c
commit 846d46d0e3
5 changed files with 16 additions and 1 deletions

View File

@ -97,6 +97,7 @@ namespace NekoGui {
// Security
bool skip_cert = false;
QString utlsFingerprint = "";
bool disable_run_admin = false; // windows only
// Remember
QStringList remember_spmode = {};

View File

@ -833,6 +833,16 @@
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="windows_no_admin">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Do not attempt to start as Admin unless explicitly requested&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Always Start as Standard User</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>

View File

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

View File

@ -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();

View File

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