>我在注册表中有以下文件夹
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 时打开我知道存在的子项