vb.net 中受保护注册表的 GetValueNames()



>我在注册表中有以下文件夹

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows DefenderExclusionsPaths

但是如何向列表框显示它们的值名称?
这是我的代码:

Dim FontKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWAREMicrosoftWindows DefenderExclusionsPaths")
For Each ValueName As String In FontKey.GetValueNames()
Dim Value As Object = FontKey.GetValue(ValueName) 'Get the value (data) of the specified value name.
If Value IsNot Nothing Then 'Make sure it exists.
ListBox1.Items.Add(Value.ToString())
End If
Next
FontKey.Close()

P/s:我收到此错误:(因为我没有创建新密钥所需的权限(

System.NullReferenceException:"对象引用未设置为对象的实例。

FontKey什么都不是。

如果要显示值名称,则只需忽略检索值并将ValueName变量添加到列表框中:

For Each ValueName As String In FontKey.GetValueNames()
ListBox1.Items.Add(ValueName)
Next

至于错误:

NullReferenceException和无权访问注册表项时实际引发的SecurityException之间存在差异。在这种情况下,发生前者是因为您打开的密钥不存在,这可能是由于您的应用程序查看 32 位版本的注册表项 (HKEY_LOCAL_MACHINESOFTWAREWow6432Node...( 而不是 64 位版本 (HKEY_LOCAL_MACHINESOFTWARE...(。

若要解决此问题,请将应用程序编译为 x64 或 AnyCPU,或强制它查看 64 位注册表。有关详细信息,请参阅此处的答案: NullReferenceException 时打开我知道存在的子项

相关内容

  • 没有找到相关文章

最新更新