尝试读取注册表项VisualBasic时System.NullReferenceException

时间:2015-06-20 20:31:15

标签: vb.net nullreferenceexception vs-2015-preview

Launcher_SessionLoginAnimation_OnShow设置为1时,我试图填充复选框。 我似乎无法解决导致System.NullReferenceException的问题。 我尝试搜索谷歌和stackexchange,但我找不到解决方案。

Imports Microsoft.Win32
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim subKeyName As String = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell\\Grid"
        Dim key As RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(subKeyName)
        If key IsNot DBNull.Value Then
            Dim readValue As String = key.GetValue("Launcher_SessionLoginAnimation_OnShow")
            If readValue.Equals("1") Then
                CheckBox1.Checked = True
            End If
        End If
    End Sub

    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked = True Then
            Dim key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell\\Grid", True)
            If key IsNot Nothing Then
                key.SetValue("Launcher_SessionLoginAnimation_OnShow", 1)
                key.Close()
            End If
        Else
            Dim key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
                  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell\\Grid", True)
            If key IsNot Nothing Then
                key.SetValue("Launcher_SessionLoginAnimation_OnShow", 0)
                key.Close()
            End If
        End If
    End Sub
End Class

其中readValue As String = key.GetValue("Launcher_SessionLoginAnimation_OnShow")抛出System.NullReferenceException 任何人都可以帮我解决这个问题吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

这一行错了:

If key IsNot DBNull.Value Then

DBNull.Value用于SQL数据库结果,而不用于注册表项。试试这个:

If key IsNot Nothing Then