我试图在VB.Net中读取注册表键值并没有太多运气。
这是关键问题:
HKEY_LOCAL_MACHINE\SOFTWARE\Intel\Setup and Configuration Software\INTEL-SA-00086 Discovery Tool\System Status
以下是代码段
Dim key As String = "SOFTWARE\Intel\Setup And Configuration Software\INTEL-SA-00086 Discovery Tool\System Status"
Dim val As String = "System Risk"
MessageBox.Show(Microsoft.Win32.Registry.LocalMachine.GetValue(key, val, Nothing))
到目前为止,我已经能够发现问题是键名之间的空格,因为我可以获得其他键的值,其中名称没有空格。
我已尝试在VB.Net中转义注册表键路径,但它要么返回值名称,要么抛出异常。
这不是因为退格或斜杠,因为以下工作
Dim key As String = "SOFTWARE\Intel\PSIS\PSIS_DECODER"
Dim val As String = "SomeKey"
MessageBox.Show(Microsoft.Win32.Registry.LocalMachine.GetValue(key, val, Nothing))
当 val 在值名称之间留有空格
时,这不起作用Dim key As String = "SOFTWARE\Intel\PSIS\PSIS_DECODER"
Dim val As String = "Some Key"
MessageBox.Show(Microsoft.Win32.Registry.LocalMachine.GetValue(key, val, Nothing))
看过enough Microsoft examples并搜索了足够多的论坛找不到任何帮助。在我寻找替代方案之前的最后一次尝试
任何魔法?
其他信息:
这是一个片段,显示如果键名或值中有空格,脚本将不返回任何内容。
这是一个名称中包含空格的键
什么都不返回
答案 0 :(得分:1)
问题与从64位注册表中读取有关。
发现于 Read 64-Bit Registry Values Using VB.Net, 为海报工作的解决方案是:
使用此格式读取64位注册表值:
Dim rk1 As RegistryKey Dim rk2 As RegistryKey rk1 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64) rk2 = rk1.OpenSubKey("HARDWARE\DESCRIPTION\System\BIOS") Dim PID As String = rk2.GetValue("SystemProductName").ToString
更多信息和解决方案可在此处找到: