我做错了吗?我没有得到任何价值......
Imports Microsoft.Win32
...
Dim s As String = ""
Dim reg As RegistryKey
reg =Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
s = reg.GetValue("RtHDVCpl", "")
MsgBox(s)
reg.Close()
答案 0 :(得分:2)
尝试messagebox.show(s.ToString)
当您在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \节点中创建密钥时,您将在64位操作系统上编译为32位。但是,创建它的应用程序应该能够将其读回,即使您无法在RegEdit.exe中找到它所在的位置
答案 1 :(得分:1)
如果没有异常,那么您可以安全地假设该值不存在或者具有空字符串作为其值。
如果您确定该值实际存在,则下一个解释是您的计算机运行64位操作系统。注册表是针对32位进程进行虚拟化的。他们将从HKLM \ Software \ Wow6432Node读取值。而且你正在运行VS2010,它会强制项目默认以32位运行。项目+属性,编译选项卡,向下滚动,高级编译选项。将目标CPU更改为AnyCPU。在Express版本中不可用,您必须手动编辑.vbproj文件。