Hola Angel.
Tal como te comenté, la prueba que realicé funciona correctamente, no me explico por que no lo hace en tu caso... Te adjunto los fuentes de la misma para que la puedas revisar con tranquilidad.
En cuanto al uso de API, funciona correctamente de este modo:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HKEY hKey;
char Buffer[1024];
DWORD dwBufSize = sizeof(Buffer);
DWORD dwError;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Firebird Project\\Firebird Server\\Instances",
0,
KEY_READ,
&hKey) == ERROR_SUCCESS) {
dwError = RegQueryValueEx(hKey,
"DefaultInstance",
0,
0,
Buffer,
&dwBufSize);
if(dwError == ERROR_SUCCESS)
ShowMessage((String)Buffer);
else
ShowMessage("No se pudo consultar la clave. \nCodigo de error: "+IntToStr(dwError));
RegCloseKey(hKey);
}
}
(Ambos códigos fueron compilados en C++ Builder 6 sobre Windows 8)
Saludos
