0

我试图找出是否安装了 SQL Server 2012 Native 客户端驱动程序。有人告诉我检查此注册表项

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLNCLI11\CurrentVersion

其中 VERSION 的值名称将具有表示已安装的值。

当我调用 API

If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then
     Exit Function
End If

在哪里

    hkey=&H80000002
    KeyName=SOFTWARE\Microsoft\Microsoft SQL Server\SQLNCLI11\CurrentVersion

它返回一个错误,就像找不到密钥一样。我已经用其他键进行了测试,它可以很好地打开它们。起初我以为是因为“Microsoft SQL Server”中的空格,事实并非如此。我可以很好地看到注册表中的密钥。

4

1 回答 1

0

在 VB6 中,该数字&H80000002显示为-2147483646. 任何非零值都将被考虑,因此只要它是非零值True,您将始终如此。Exit Function拥有这种类型的逻辑通常不是一个好主意If X Then ...

建议:

If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle)=0 Then
     Exit Function
End If

编辑:重新阅读您的帖子后,我对问题出在哪里感到有些困惑。它是一个运行时错误还是只是逻辑没有做它应该做的事情?

于 2013-11-04T19:49:24.070 回答