Автозапуск программы vb.net с параметрами командной строки не работает

Я пишу приложение, которое требует прав администратора для запуска в VB.NET (VS2012,framework 4). Это приложение для защиты файла Hosts от изменения. Я хочу, чтобы приложение запускалось автоматически с окнами с аргументом командной строки "автозапуск".

Поэтому я сделал флажок со следующим кодом:

Private Sub CheckBox_autoupdate_Click(sender As Object, e As EventArgs) Handles CheckBox_autoupdate.Click
        Dim oreg As RegistryKey = Registry.CurrentUser
        Dim okey As RegistryKey = oreg.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Run", True)
        If CheckBox_autoupdate.Checked = True Then
            okey.SetValue("HostProtect", Application.ExecutablePath & " /autoupdate")
        Else
            okey.DeleteValue("HostProtect")
        End If
        My.Settings.Save()
    End Sub

Когда я открываю regedit, значение присутствует, но когда я перезагружаю систему, программа вообще не выполняется!

Это потому, что приложению нужны права администратора? Как я могу заставить его начать И правильно передать аргумент командной строки?

Ожидая ваших ответов!

2 ответа

Решение

Записи HKey_CurrentUser не запускаются при запуске Windows. Они запускаются, когда пользователь входит в систему и загружается куст реестра пользователя. Если вы хотите, чтобы он запускался при запуске Windows, вам нужно использовать HKey_LocalMachine. Или, что еще лучше, напишите это как службу Windows.

Application.ExecutablePath получит .exe ссылка, а не путь, так и должно быть:

Application.StartupPath & " \autoupdate.exe"
Другие вопросы по тегам