如何使用vb.net从注册表项中的多个valueNames中搜索值

时间:2016-07-20 23:06:45

标签: vb.net

我有多个注册表值名称,每个名称的值都在HKEY_CURRENT_USER\SOFTWARE\HomeApp下。现在,我想从注册表值名称列表中搜索特定值,每个值包含一个值。我有:

VALUENAME     VALUE    
valuename0    98OTIUO    
valuename1    H989804    
valuename2    KG65326    
valuename3    BCG37A2    
...

假设我想找到是否有价值" KG65326"我怎么在vb.net中做到这一点?

1 个答案:

答案 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