我试图在VB.NET中创建一个程序,将自己添加到Windows注册表中的启动。但是,当我运行该程序时,我收到此错误消息:
尝试执行未经授权的操作。
我试图更改权限并在线使用了很多方法,但事实证明这些方法都不成功。我似乎没有权限干涉注册表。
这是我的代码:
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "FILENAME", "FILEPATH")
我做错了什么?
答案 0 :(得分:2)
正如Joel在评论中所说,你应该首先打开子项,然后设置值。
以下是我通常用于在Windows启动时添加/删除程序的方法:
Public Sub AddToStartup(Optional appCommand As String = "")
Dim applicationName As String = Application.ProductName
Dim applicationPath As String = Application.ExecutablePath
Dim regKey As Microsoft.Win32.RegistryKey
regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
regKey.SetValue(applicationName, """" & applicationPath & """" & appCommand)
regKey.Close()
End Sub
Public Sub RemoveFromStartup()
Dim applicationName As String = Application.ProductName
Dim regKey As Microsoft.Win32.RegistryKey
regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
regKey.DeleteValue(applicationName, False)
regKey.Close()
End Sub
我在appCommand
方法中使用Optional参数(即AddToStartup
),以防我想将命令参数传递给在Windows启动时运行的实例。例如" -Hide"
在启动时运行时将程序隐藏在托盘中。
旁注:始终为用户提供自愿添加应用程序以启动的选项,以及反转该选项的选项。 未经用户许可,不得强制您的应用在启动时运行 ,否则用户会讨厌您:)