我有多个注册表值名称,每个名称的值都在HKEY_CURRENT_USER\SOFTWARE\HomeApp
下。现在,我想从注册表值名称列表中搜索特定值,每个值包含一个值。我有:
VALUENAME VALUE
valuename0 98OTIUO
valuename1 H989804
valuename2 KG65326
valuename3 BCG37A2
...
假设我想找到是否有价值" KG65326"我怎么在vb.net中做到这一点?
答案 0 :(得分:0)
您必须遍历所有值条目,直到找到具有特定值的条目。您可以在RegistryKey.GetValueNames()
返回的数组上使用For
循环来执行此操作,然后通过RegistryKey.GetValue()
获取每个条目的值。
你可以简单地为它做一个扩展:
Imports Microsoft.Win32
Imports System.Runtime.CompilerServices
Public Module Extensions
<Extension()> _
Public Function ContainsValue(ByVal RegKey As RegistryKey, ByVal Value As Object) As Boolean
For Each ValueName As String In RegKey.GetValueNames()
If RegKey.GetValue(ValueName) = Value Then
Return True
End If
Next
Return False
End Function
End Module
使用示例:
Using MyKey As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE").OpenSubKey("HomeApp")
If MyKey.ContainsValue("KG65326") = True Then
'Do your stuff here.
End If
End Using