2014-03-03 145 views
1

我已經想出瞭如何獲取註冊表鍵值,我現在正在查找的是如何獲取特定路徑的註冊表值?獲取註冊表值

Private Sub ListRegistryKeys(ByVal RegistryHive As String, ByVal RegistryPath As String) 
    Dim key As Microsoft.Win32.RegistryKey 
    Select Case RegistryHive 
     Case "HKEY_LOCAL_MACHINE" : key = My.Computer.Registry.LocalMachine.OpenSubKey(RegistryPath) 
     Case "HKEY_CURRENT_USER" : key = My.Computer.Registry.CurrentUser.OpenSubKey(RegistryPath) 
     Case "HKEY_CLASSES_ROOT" : key = My.Computer.Registry.ClassesRoot.OpenSubKey(RegistryPath) 
     Case "HKEY_CURRENT_CONFIG" : key = My.Computer.Registry.CurrentConfig.OpenSubKey(RegistryPath) 
     Case "HKEY_USERS" : key = My.Computer.Registry.Users.OpenSubKey(RegistryPath) 
     Case Else 
      Throw New Exception("Unknow Registry Hive.") 
    End Select 
    For Each subkey In key.GetSubKeyNames 
     ListView2.Items.Add(subkey.ToString) 
    Next 
End Sub 

那就是我用來獲取註冊表鍵值。 現在我想通過指定Registryhive和標題中的密鑰路徑來獲得與註冊表值相同的值。 我想找到3個註冊表值的屬性。

Registry Values in Regedit

這意味着

1)VALUENAME 2)VALUETYPE 3)的值

如何修改從上面的樣品來實現這一目標的數據?

回答

1

如果我正確理解你,你想獲取路徑中的值並將它們寫在列表視圖中,類似於你使用註冊表編輯器的截圖。您可以修改您所提供的示例代碼如下:

Private Sub ListRegistryKeys(ByVal RegistryHive As String, ByVal RegistryPath As String) 
    Dim key As Microsoft.Win32.RegistryKey 

    Select Case RegistryHive 
     Case "HKEY_LOCAL_MACHINE" : key = My.Computer.Registry.LocalMachine.OpenSubKey(RegistryPath) 
     Case "HKEY_CURRENT_USER" : key = My.Computer.Registry.CurrentUser.OpenSubKey(RegistryPath) 
     Case "HKEY_CLASSES_ROOT" : key = My.Computer.Registry.ClassesRoot.OpenSubKey(RegistryPath) 
     Case "HKEY_CURRENT_CONFIG" : key = My.Computer.Registry.CurrentConfig.OpenSubKey(RegistryPath) 
     Case "HKEY_USERS" : key = My.Computer.Registry.Users.OpenSubKey(RegistryPath) 
     Case Else 
      Throw New Exception("Unknow Registry Hive.") 
    End Select 

    key.OpenSubKey(RegistryPath) 

    For Each v In key.GetValueNames() 
     Dim lvItem As ListViewItem = ListView2.Items.Add(v) 
     lvItem.SubItems.Add(subKey.GetValue(v)) 
     lvItem.SubItems.Add(subKey.GetValueKind(v).ToString()) 
    Next 

End Sub 

我調用包含使用提供的路徑選擇蜂房的RegistryKey的OpenSubKey方法。然後我遍歷所有的值,爲每個值創建一個列表視圖項。子項目分別包含值和類型。

請注意,這是不完整的。您將需要檢查註冊表路徑是否存在或陷阱錯誤。

+0

感謝您的回覆,但是這會引發我一個NullReferenceException:http://puu.sh/7hJVC/0524446c2d.png – nexno

+0

而且路徑definitly存在,並且裏面還有RegistryVlaues,但是它會拋出錯誤。 – nexno

+0

對不起nexno,我解決了我的答案。 OpenSubKey也不會爲我返回任何東西,但似乎無論如何都會打開關鍵對象上的子項。 – Peign