Inno Setup检测SQL Express失败:RegQueryStringValue返回False问题排查
问题
我尝试在Inno Setup中检测机器上是否安装了SQL Express,于是编写了以下代码:
res:= RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL', 'SQLEXPRESS', installPath); MsgBox('Value is "' + installPath + '"', mbInformation, MB_OK);
但installPath始终为空,res也一直返回False,请问问题出在哪里?
解决方案
出现该问题的常见原因及对应解决办法如下:
- 32位/64位注册表重定向:若你的Inno Setup安装包是32位,在64位系统中访问
HKLM\SOFTWARE会被自动重定向到HKLM\SOFTWARE\Wow6432Node,而64位SQL Express的实例信息存于原生HKLM\SOFTWARE路径。可改用HKLM64替代HKLM访问64位注册表,或在[Setup]段添加ArchitecturesInstallIn64BitMode=x64让安装包以64位模式运行。 - 注册表键值名称不符:确认SQL Express的实例名称确实是
SQLEXPRESS,自定义安装的实例可能使用其他名称。手动打开注册表编辑器,导航到HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL路径,查看是否存在SQLEXPRESS键值。 - 权限不足:运行安装包时没有足够的注册表读取权限,可右键以管理员身份运行安装包,或在脚本[Setup]段添加
PrivilegesRequired=admin确保安装包以管理员权限启动。
内容的提问来源于stack exchange,提问作者nnmmss
相关产品推荐
相关产品推荐

