我正在为使用SQL Server的软件开发安装程序,所以我要检查它是否使用下面的代码安装,在Windows 7 x64和Inno Setup 5.5.4上运行(在Ansi和Unicode上进行了测试):
function IsSQLServerInstalled(): Boolean;
var
version: string;
instances: String;
instancesList: TArrayOfString;
i: Integer;
begin
if (not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Microsoft SQL Server')) then begin
Result := False;
end
else begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Microsoft SQL Server', 'InstalledInstances', instances);
// code goes on...
这里没有一个问题,因为代码编译得很好,但是当我调试时,"实例"变量保持空白,虽然我有这个MULTI_SZ寄存器值包含我机器上安装的实例。它应该返回类似于" INSTANCE1 INSTANCE2"等等,它只给我一个"空白" ''
RegKeyExists
函数也可以正常执行,因此正常命中else
块。
我做错了什么?