Автозапуск программы 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"