【问题标题】:How to find if and where is installed firebird in delphi如何在delphi中查找是否安装了firebird以及在哪里安装
【发布时间】:2014-07-11 13:44:44
【问题描述】:

问题:我需要在 firebird 中修改 aliases.conf,但是.. 我们知道用户可以在任何他想要的地方安装 firebird。所以我需要以编程方式找出火鸟的安装位置。我尝试通过注册表来做到这一点,但这不是一个好主意,因为几乎每个新版本的 Windows(2000、XP、VISTA、7、8 和 32 位或 64 位,可能是 128 位)的注册表项都会发生变化。我还尝试找出搜索注册表的过程,例如简单的文本文件,但没有结果。我试图找到“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs\aliases.conf”,但这不是简单的方法。问题可能不在于 Lazarus 的注册表功能,但我不知道。因此,可能有人知道如何检查是否安装了 firebird 以及安装在哪里。简短地说:我将使用数据库文件安装我的应用程序,并且必须默默地修改 aliases.conf。

【问题讨论】:

  • 放弃吧,问问用户。 Firebird 可能没有在本地安装。更糟糕的是,可能存在本地非活动安装和远程运行服务器。如果我安装了你的程序就会出现这种情况......
  • "aliases.conf" 不是 DLL,因此没有理由期望它出现在 SharedDLL 注册表项中。您不应该“默默地修改”任何与用户的数据库配置相关的内容,因为您可能会破坏另一个不属于您的(可能是关键的)应用程序。

标签: windows delphi search path registry


【解决方案1】:

您可以通过检查注册表项HKLM\Software\Firebird Project\Firebird Server\Instances并读取DefaultInstance的值来找到Firebird的安装位置。

下面的代码应该可以解决问题:-

var
  lReg : TRegistry;
  lStr : String;
begin
  lReg := TRegistry.Create;
  Try
    lReg.RootKey := HKEY_LOCAL_MACHINE;
    If lReg.OpenKey('Software\Firebird Project\Firebird Server\Instances', False) Then
      lStr := lReg.ReadString('DefaultInstance');
    lReg.CloseKey;
    ShowMessage(lStr);
  Finally
    FreeAndNil(lReg);
  End;

【讨论】:

  • Andy_D 我用过这个功能,但是不行。函数 TfrMain.GetSubKeys(ARegStr: string; var SubKeys: TStringList): boolean;变量注册:TRegistry;开始子键 := nil;注册 := TRegistry.create;尝试如果 Reg.OpenKey(ARegStr, false) 然后开始 SubKeys := TStringList.Create; Reg.GetKeyNames(子键); Reg.CloseKey;结尾;最后是Reg.free;结尾;结果:=子键无;结束;
  • 你得到什么结果?您的 PC 上是否安装了 Firebird 您是否使用 RegEdit 检查了注册表值?
  • 您的注册表功能不起作用。我已经用一个功能更新了我的答案,该功能可以在我拥有的 3 台安装了 Firebird 的机器上完美运行。
  • 在 regedt 我没有那个钥匙。我发现只是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\SharedDLLs\aliases.conf 但是你知道另一台计算机有其他愚蠢的窗口,这个键不起作用。如果我可以只使用密钥的部分名称来搜索密钥,例如“aliases.conf”,那就太好了。
  • 是的,是的,我已经安装了 Firebird。结果是零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
相关资源
最近更新 更多