在ICON部分中使用注册表值

时间:2015-02-01 17:53:56

标签: icons inno-setup

我正在尝试使用注册表值来获取ICONS部分中EXE文件的位置,该值不在普通的\ microsoft \ windows \ exe \ registry中。我有以下代码没有重新调整值,ICON创建时使用"计算机"为了目标。

function GetACADexe (Param: string): string;
var VerKey: String;
var ExeKey: String;
begin
    if RegQueryStringValue(HKCU, 'Software\Classes\AutoCAD.Drawing', 'CurVer', VerKey) and
         RegQueryStringValue(HKCU, 'Software\Classes\' + VerKey + '\Protocol\StdFileEditing', 'Server', ExeKey) then
        Result := ExpandConstant ('{ExeKey}')     
 end;

1 个答案:

答案 0 :(得分:0)

以下是最终的工作答案;

function GetHKCU() : Integer;
begin
 if IsWin64 then
  begin
    Result := HKCU64;
  end
  else
  begin
    Result := HKEY_CURRENT_USER;
  end;
end;

function GetACADexe(Value: String): string;
var
  VerKey: string;
  ExeKey: string;
begin
  // result should be initialized for case when ACAD is not installed
  Result := '';
  if RegQueryStringValue(GetHKCU(), 'Software\Classes\AutoCAD.Drawing\CurVer', '', VerKey) and
     RegQueryStringValue(GetHKCU(), 'Software\Classes\' + VerKey + '\Protocol\StdFileEditing\Server', '', ExeKey)
  then
    Result := ExeKey;
end;

除了检查32位或64位系统外,我还遇到了注册表值为"(默认)"价值观,这就是为什么空的'为关键名称。现在效果很好....感谢TLAMA。