こんにちわ。
レジストリの「Reg_Multi_sz」についてなんですが・・・
たとえば、「"AAAAA" "BBBBB"」といった内容が登録されていた場合、
これらを読み出すにはどうすればいいのでしょうか?
読み込み先を配列にするのでしょうか?
そもそも、メソッド(?)は何なんでしょうか?
「?」だらけですみませんが、どうぞお知恵を・・・。
よろしくおねがいします。
読みとりはAPIで行います。
RegOpenKeyExで開き、RegQueryValueExで取得し、RegCloseKeyで閉じます。
RegQueryValueExで取得したREG_MULTI_SZの値は、改行がNULL文字になっています。値の最後はNULL文字2つです。
例えばこんな感じです。
procedure TForm1.Button1Click(Sender: TObject);
var
buf, p: PBYTE;
dwType: DWORD;
dwLen: DWORD;
hReg: HKEY;
i: integer;
begin
RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'HARDWARE\DESCRIPTION\System\',0,1,hReg);
buf := GetMemory(255);
dwLen := 255;
dwType := 7; // REG_MULTI_SZ
RegQueryValueEx(
hReg,
'SystemBiosVersion',
nil,
@dwType,
PBYTE(buf),
@dwLen);
p := buf;
for i := 0 to 254 do
begin
if p^=0 then
begin
p^ := 13; // 改行
inc(p);
if p^ = 0 then break; // 0が二つで終了
end
else inc(p);
end;
Memo1.Lines.Text := String(PCHar(buf));
FreeMemory(buf);
RegCloseKey(hReg);
end;
にしのさん、ありがとうございます。
カンポキです!
助かりました。
ツイート | ![]() |