0

对于我的程序,我希望它检查是否已经安装了 Visual C++,并且通过一点谷歌搜索,我可以通过检查注册表项来检查它们是否已安装,如下所述:http: //blogs.msdn.com/b /astebner/archive/2010/05/05/10008146.aspx

问题是,当我实际运行程序时,什么也没有发生。我尝试以管理员身份运行它,但仍然没有任何反应。这是我的代码:

Imports Microsoft.Win32

Public Class Form1
    Public Sub Form1_Load()
        Dim regKey As RegistryKey
        regKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64", True)
        If Not regKey Is Nothing Then
            MsgBox("Found")
        Else
            MsgBox("Not Found")
        End If
    End Sub
End Class

我不确定我是否输入正确或有什么问题。

4

1 回答 1

1

根据 MSDN 链接,您应该从本地机器密钥读取,而不是当前用户密钥:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\x64] 

您应该尝试更改regKey代码中的行,如下所示:

regKey = Registry.LocalMachine.OpenSubKey("SOFTWARE...
' change this --> ^^^^^^^^^^^^

编辑 - 关于您的表单不做任何事情:您的Form1_Load函数永远不会被调用,因为它没有正确的签名。Form1_Load将您的函数签名更改为:

Protected Overrides Sub OnLoad(e As EventArgs)
    Dim regKey As RegistryKey
    ...

您可能必须以管理员身份运行 Visual Studio 才能从本地计算机密钥中读取注册表。

于 2013-05-19T18:23:22.623 回答