レジストリのReg_Multi_szについて

解決


のぶ  2003-02-16 00:40:18  No: 2920

こんにちわ。
レジストリの「Reg_Multi_sz」についてなんですが・・・

たとえば、「"AAAAA" "BBBBB"」といった内容が登録されていた場合、
これらを読み出すにはどうすればいいのでしょうか?
読み込み先を配列にするのでしょうか?
そもそも、メソッド(?)は何なんでしょうか?

「?」だらけですみませんが、どうぞお知恵を・・・。
よろしくおねがいします。


にしの  2003-02-16 01:57:18  No: 2921

読みとりは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;


のぶ  2003-02-18 00:41:14  No: 2922

にしのさん、ありがとうございます。
カンポキです!
助かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加