You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中在HKEY_LOCAL_MACHINE\Software下读写注册表值的问题

嘿,我来帮你搞定这个注册表操作的问题!你的代码现在是直接在HKEY_LOCAL_MACHINE根目录下操作值,但你需要的是在HKEY_LOCAL_MACHINE\Software子项里读写,问题出在参数的传递方式上,我给你一步步修正:

问题根源

你当前的代码:

My.Computer.Registry.LocalMachine.SetValue("Study", "1")

这里第一个参数"Study"被当作了根目录下的值名称,所以会直接在HKLM根键创建Study值,而不是在Software子项里。

正确的读写代码

1. 基础版(适用于简单场景)

如果只是要在HKLM\Software子项中直接读写Study值,只需要调整参数:

  • 设置值:
    ' 第一个参数是子项路径"Software",第二个是值名称"Study",第三个是值内容
    My.Computer.Registry.LocalMachine.SetValue("Software", "Study", "1")
    
  • 读取值:
    ' 第一个参数指定子项"Software",第二个是要读取的值名称"Study"
    Dim RegistryCheck As String = My.Computer.Registry.LocalMachine.GetValue("Software", "Study")
    

2. 进阶版(处理权限和64位系统重定向)

因为HKLM\Software是系统级注册表项,有两个常见坑需要注意:

  • 管理员权限:写入该路径需要程序以管理员身份运行,否则会抛出权限异常。你可以在项目属性的「安全性」里启用UAC,设置权限级别为requireAdministrator。
  • 64位系统重定向:32位程序会被自动重定向到HKLM\Software\Wow6432Node,如果要访问64位注册表项,需要用RegistryKey的API手动指定视图:
    ' 设置64位注册表项的值
    Using baseKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
        Using softwareKey As RegistryKey = baseKey.OpenSubKey("Software", True) ' True表示可写
            softwareKey.SetValue("Study", "1")
        End Using
    End Using
    
    ' 读取64位注册表项的值
    Using baseKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
        Using softwareKey As RegistryKey = baseKey.OpenSubKey("Software", False) ' False表示只读
            Dim RegistryCheck As String = softwareKey.GetValue("Study").ToString()
        End Using
    End Using
    

额外提示

通常不建议直接在HKLM\Software根下创建值,最好创建自己的应用程序子项(比如HKLM\Software\YourAppName),这样更规范,也避免和其他软件的注册表项冲突:

' 设置自定义子项的值
My.Computer.Registry.LocalMachine.SetValue("Software\YourAppName", "Study", "1")
' 读取自定义子项的值
Dim RegistryCheck As String = My.Computer.Registry.LocalMachine.GetValue("Software\YourAppName", "Study")

内容的提问来源于stack exchange,提问作者Swastik Bhattacharyya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:11:25