VB.NET读取注册表

Jim*_*y D 4 vb.net registry

这一次超越困惑......

最简单的代码行有时会工作,有时则不然.首先我认为问题是我试图读取DWORD的值,但是因为我可以从SOME键读取DWORD值,所以这不是问题.现在问题似乎是,如果密钥在名称中有空格,我无法从任何密钥读取.当然这不可能.我拒绝相信MS没有考虑注册表密钥路径和名称中的空格.

那么告诉我为什么这不起作用:

MsgBox(My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\CA\CA ARCserve D2D\WebService", "Port", Nothing))
Run Code Online (Sandbox Code Playgroud)

它只是弹出一个空盒子.是的,注册表中确实存在一个值,是的,我有权读取密钥.

编辑:是的,一遍又一遍,似乎你无法从注册表中读取密钥名称中是否有空格.真的吗?!?

编辑再次:"Ramhound"说代码示例是愚蠢的.引人入胜的观点.但他自己的建议也失败了:

Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\ATI Technologies\CBT")

Dim objValue As Object

objValue = key.GetValue("ReleaseVersion")

MSGBOX(objValue.ToString())

Jim*_*y D 7

在整个浪费的一天之后,解决方案是在高级编译选项中将VS项目设置为"任何cpu",因为如果设置为x86并在64位操作系统上运行,则仅限于注册表中的"Wow6432node".