2011-09-05 131 views
0

我做错了什么?我没有得到任何值回...阅读注册表项

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

您是否收到任何错误的应用程序?值是否真的存在于注册表中? – ChrisF

+0

该值存在,返回值只是一个空字符串 –

回答

1

如果你也不例外,那么你可以安全地假定值不存在或有一个空字符串作为它的值。

如果您确定该值实际存在,那么下一个解释是您的机器运行64位操作系统。在哪里注册表被虚拟化为32位进程。他们将从HKLM \ Software \ Wow6432Node读取值。而且你运行的是VS2010,它强制项目默认运行在32位。项目+属性,编译选项卡,向下滚动,高级编译选项。将目标CPU更改为AnyCPU。在Express版afaik中不可用,您必须手动编辑.vbproj文件。

2

尝试messagebox.show(s.ToString)

Wehn编译到32位在64位的操作系统,当钥匙将在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \节点创建。然而,创建它应该能够读回,即使你不能找到它,你预计REGEDIT.EXE