Registry 的問題 |
尚未結案
|
bennykyp
一般會員 發表:11 回覆:31 積分:8 註冊:2004-10-21 發送簡訊給我 |
R.Access := KEY_READ;
為何在 Delphi 2 不能使用呢 ? Delphi 5 就沒問題 是否在 delphi 2 有不同的指令, 也能達到與 Delphi 5 的相同功能. Function Reg_GetKeyNames(RootKey : DWORD; AKey : String): TStringList;
var
R: TRegistry;
begin
Result := TStringList.Create;
R := TRegistry.Create;
Try
R.RootKey := RootKey;
R.Access := KEY_READ;
if R.OpenKey(AKey, False) then
begin
R.GetKeyNames(Result);
R.CloseKey;
end;
Finally
FreeAndNil(R);
End;
end;
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
wameng
版主 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
不透過 TRegistry 單元的物件操作就可以了。
如:
function RegEnum(RootKey: HKEY; Name: String; var ResultList: String; const DoKeys: Boolean): boolean; var i: integer; iRes: integer; s: String; hTemp: HKEY; Buf: Pointer; BufSize: Cardinal; begin Result := False; ResultList := ''; if RegOpenKeyEx(RootKey, PChar(Name), 0, KEY_READ, hTemp) = ERROR_SUCCESS then begin Result := True; BufSize := 1024; GetMem(buf, BufSize); i := 0; iRes := ERROR_SUCCESS; while iRes = ERROR_SUCCESS do begin BufSize := 1024; if DoKeys then iRes := RegEnumKeyEx(hTemp, i, buf, BufSize, nil, nil, nil, nil) else iRes := RegEnumValue(hTemp, i, buf, BufSize, nil, nil, nil, nil); if iRes = ERROR_SUCCESS then begin SetLength(s, BufSize); Move(buf^, s[1], BufSize); if ResultList = '' then ResultList := s else ResultList := Concat(ResultList, #13#10, s); inc(i); end; end; FreeMem(buf); RegCloseKey(hTemp); end; end; function RegEnumValues(RootKey: HKEY; Name: String; var ValueList: String): boolean; begin Result := RegEnum(RootKey, Name, ValueList, False); end; function RegEnumKeys(RootKey: HKEY; Name: String; var KeyList: String): boolean; begin Result := RegEnum(RootKey, Name, KeyList, True); end;完整源碼為 MiniReg 忘記在哪裡下載的。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |