我试图找出是否安装了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”中的空格,它不是。我可以很好地看到注册表中的密钥。
答案 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
编辑:重新阅读你的帖子后,我对问题所在的地方感到有些困惑。它是一个运行时错误还是只是逻辑没有做它应该做的事情?