leer cadena del registro
Publicado por Loco (1 intervención) el 04/04/2003 22:25:52
necesito ayuda al leer una cadena del registro de windows.
lo estoy haciendo por medio de las funciones API de windows, pero me sale error de acceso a memoria y no se porque.
procedure ReadRegString(Key: HKEY; lpSubPath, lpSubKey, lpRetStr: PChar);
var
lpKey: HKEY;
lpLen: DWORD;
begin
RegOpenKey(Key, lpSubPath, lpKey);
RegQueryValueEx(lpKey, lpSubKey, nil, nil, nil, @lpLen);
GetMem(lpRetStr, lpLen);
RegQueryValueEx(lpKey, lpSubKey, nil, nil, @lpRetStr, @lpLen);
RegCloseKey(lpKey);
end;
y lo llamo de esta manera.
procedure Leer;
var
S: PChar;
begin
ReadRegString(HKEY_LOCAL_MACHINE, FExePath, FExeKey, S);
ShowMessage(String(S));
end;
tambien he probrado pasando el ultimo valor como string por referencia pero la misma historia.
alguna idea en como hacerlo bien, ya sea como funcion o procedimiento.
quiero hacerlo con API, no con el clase TRegistry.
gracias
lo estoy haciendo por medio de las funciones API de windows, pero me sale error de acceso a memoria y no se porque.
procedure ReadRegString(Key: HKEY; lpSubPath, lpSubKey, lpRetStr: PChar);
var
lpKey: HKEY;
lpLen: DWORD;
begin
RegOpenKey(Key, lpSubPath, lpKey);
RegQueryValueEx(lpKey, lpSubKey, nil, nil, nil, @lpLen);
GetMem(lpRetStr, lpLen);
RegQueryValueEx(lpKey, lpSubKey, nil, nil, @lpRetStr, @lpLen);
RegCloseKey(lpKey);
end;
y lo llamo de esta manera.
procedure Leer;
var
S: PChar;
begin
ReadRegString(HKEY_LOCAL_MACHINE, FExePath, FExeKey, S);
ShowMessage(String(S));
end;
tambien he probrado pasando el ultimo valor como string por referencia pero la misma historia.
alguna idea en como hacerlo bien, ya sea como funcion o procedimiento.
quiero hacerlo con API, no con el clase TRegistry.
gracias
Valora esta pregunta


0