使用命令行参数自动运行vb.net程序不起作用

时间:2013-04-06 13:07:44

标签: vb.net command arguments autostart

我正在编写一个需要管理员权限才能在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时,该值存在,但是当我重新启动系统时,程序根本没有执行!

是否因为该应用需要管理员权限?如何启动并正确传递命令行参数?

预测你的答案!

2 个答案:

答案 0 :(得分:0)

Application.ExecutablePath会获得.exe链接,而不是路径,因此应该是:

Application.StartupPath & " \autoupdate.exe"

答案 1 :(得分:0)

Windows启动时,

HKey_CurrentUser条目不会运行。它们在用户登录并且加载用户的注册表配置单元时运行。如果您希望在Windows启动时运行它,则需要使用HKey_LocalMachine。或者甚至更好,将其写为Windows服务。