读取注册表内的字符串转换问题
InstallPath用字符串直接取是乱码的,用二进制查看是正常的,请问这个应该怎么才能读到正常的字符串? 以下是我的代码.
Function ToReg:string;
var
IeCache:array[0..1024] of char;
IeCacheLen:integer;
HK:HKEY;
s:string;
begin
Result := '';
IeCacheLen:=1024;
RegOpenKey(HKEY_LOCAL_MACHINE,'SOFTWARE\FairRain\Open\Setup',HK);
RegQueryValueEx(HK,PChar('InstallPath'),nil,nil,@IeCache,@ieCacheLen);
Result := Strpas(IeCache);
end;
var
IeCacheLen:integer;
HK:HKEY;
s:UTF8String;
begin
RegOpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\FairRain\Open\Setup', HK);
RegQueryValueExW(HK, 'InstallPath', nil, nil, nil, @IeCacheLen);
SetLength(s, IeCacheLen);
RegQueryValueExW(HK, 'InstallPath', nil, nil, @s[1], @IeCacheLen);
RegCloseKey(HK);
Result:=s;