Cita:
Empezado por Delphius
Yo dispongo de Windows 8.1 64bits y la clave del registro no es esa. Es la tradicional:
HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Proyect\Firebird Server\Instances
En la carpeta de instalación, que por defecto, es la misma de siempre (bueno, en caso que se instale la v. 32bits será en "Program Files (x86)"), Hay una carpeta que dice WOW64 que contiene copias de fbclient, instserver, y otros lib. Admito que me falta documentarme más sobre Firebird en entorno 64bits (y sobre todo en la versión 2.5), pero creería que este subdirectorio contiene lo necesario para hacer una conexión desde clientes 32bits a un entorno server 64bits
...
|
Hola Delphius.
Gracias por tu comentario ( había olvidado que las aplicaciones 32 bits bajo Windows 64 se instalan en "Program Files (x86)" )
Entonces creo que
cipce22 podría intentar así:
Código Delphi
[-]
...
uses Registry;
procedure GetFirebirdAliases(Strings: TStrings);
type
LPFN_ISWOW64PROCESS = function(hProcess: THandle; var Wow64Proc: BOOL): BOOL; stdcall;
var
fnIsWow64Proc: LPFN_ISWOW64PROCESS;
IsWow64: BOOL;
path: string;
i : Integer;
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly('\Software\Firebird Project\Firebird Server\Instances') then
path := ReadString('DefaultInstance')
else
raise Exception.Create('Firebird no instalado');
finally
Free;
end;
fnIsWow64Proc:= LPFN_ISWOW64PROCESS(GetProcAddress(GetModuleHandle('kernel32'),'IsWow64Process'));
if Assigned(fnIsWow64Proc) then
fnIsWow64Proc(GetCurrentProcess(), IsWow64);
if IsWow64 then
path := StringReplace(path, 'Program Files', 'Program Files (x86)',[rfIgnoreCase]);
Strings.LoadFromFile(path + 'aliases.conf');
for i:= Strings.Count-1 downto 0 do
if Pos('#', Trim(Strings[i])) = 1 then Strings.Delete(i);
end;
Saludos