Как запустить приложение при запуске от имени администратора? - PullRequest
0 голосов
/ 03 ноября 2018

Моя проблема проста. Я не могу найти решения обеих проблем вместе. Мой вопрос о запуске моей программы при запуске с разрешением администратора без предупреждения. Я просто хочу получить права администратора по настройке. Я использую regedit для запуска моей программы при запуске, она работает без прав администратора. Если я пытаюсь дать права администратора на манифест приложения, программа не запускается при запуске. Как мне решить это? Также программе нужен графический интерфейс, поэтому я не могу пользоваться услугами. Спасибо за помощь.

Есть мои стартовые коды

private void SetStartup()
    {
        RegistryKey rk = Registry.CurrentUser.OpenSubKey
            ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

        if (chkStartUp.Checked)
        {
            rk.SetValue("_connectorEthernet", Environment.CurrentDirectory + @"\_connectorEthernet");
            WriteToSettingFile("true");
        }
        else
        {
            rk.DeleteValue("_connectorEthernet", false);
            WriteToSettingFile("false");
        }
    }

1 Ответ

0 голосов
/ 04 ноября 2018

Хорошо, я думаю, что решил. Сначала я сделал

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

Для запуска программы при запуске. Если вы этого не сделаете, эта программа не запустится.

После этого я использовал settings.setting в окне обозревателя решений.

settings.setting

Это для получения настроек

chkStartUp.Checked = Properties.Settings.Default.chk;

А это для изменения и сохранения настроек

Properties.Settings.Default.chk = true;
Properties.Settings.Default.Save();

И, наконец, этот код для запуска cmd от имени администратора и получения ответа.

        var proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {

                FileName = "netsh.exe",
                Arguments = "lan reconnect",
                UseShellExecute = false,
                RedirectStandardOutput = true,
                CreateNoWindow = true,
                Verb = "runas"
            }
        };
        proc.Start();
        string line = proc.StandardOutput.ReadToEnd();
        MessageBox.Show(line);

Так я решил свои проблемы. Я надеюсь, что это может помочь другим. Если у вас есть другая идея, пожалуйста, свяжитесь со мной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...