某些注册表项不返回值VB6

时间:2013-11-04 19:04:08

标签: vb6 registry

我试图找出是否安装了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”中的空格,它不是。我可以很好地看到注册表中的密钥。

1 个答案:

答案 0 :(得分:0)

在VB6中,该号码&H80000002的格式为-2147483646。任何非零值都将被视为True,因此只要其为非零值,您将始终Exit Function。拥有这种逻辑If X Then ...

通常不是一个好主意

建议:

If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle)=0 Then
     Exit Function
End If
编辑:重新阅读你的帖子后,我对问题所在的地方感到有些困惑。它是一个运行时错误还是只是逻辑没有做它应该做的事情?