我正在编写一个需要管理员权限才能在VB.NET中运行的应用程序(VS2012,框架4) 它是一个保护Hosts文件免受修改的应用程序。 我希望应用程序能够使用命令行参数“autorun”自动启动Windows。
所以我使用以下代码制作了一个复选框:
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时,该值存在,但是当我重新启动系统时,程序根本没有执行!
是否因为该应用需要管理员权限?如何启动并正确传递命令行参数?
预测你的答案!
答案 0 :(得分:0)
Application.ExecutablePath
会获得.exe
链接,而不是路径,因此应该是:
Application.StartupPath & " \autoupdate.exe"
答案 1 :(得分:0)
HKey_CurrentUser条目不会运行。它们在用户登录并且加载用户的注册表配置单元时运行。如果您希望在Windows启动时运行它,则需要使用HKey_LocalMachine。或者甚至更好,将其写为Windows服务。