"试图执行未经授权的操作"使用Registry.SetValue时出错

时间:2017-10-23 21:46:53

标签: vb.net registry

我试图在VB.NET中创建一个程序,将自己添加到Windows注册表中的启动。但是,当我运行该程序时,我收到此错误消息:

  

尝试执行未经授权的操作。

我试图更改权限并在线使用了很多方法,但事实证明这些方法都不成功。我似乎没有权限干涉注册表。

这是我的代码:

My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "FILENAME", "FILEPATH")

我做错了什么?

1 个答案:

答案 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"在启动时运行时将程序隐藏在托盘中。

旁注:始终为用户提供自愿添加应用程序以启动的选项,以及反转该选项的选项。 未经用户许可,不得强制您的应用在启动时运行 ,否则用户会讨厌您:)