2010-06-21 10 views

답변

5

당신은 도움에서 TRegistry.GetKeyNames(Strings: TStrings);

을 찾고 계십니까 : 는 현재 키에 속하는 모든 하위 키의 이름을 포함하는 문자열의리스트를 돌려줍니다.

0
function GetRegSubTree(MainKey : LongInt; var aList : TStringList; aKey : 
string) : Boolean; 
var 
    hRoot   : HKEY; 
    lItem   : LongInt; 
    hError   : LongInt; 
    szKey,pData   : PChar; 
    aString  : String; 

begin 
    GetRegSubTree:=false; 
    if aList=Nil then exit; 
{create pointers for the API} 
    szKey := StrAlloc(Length(aKey) + 1); 
    StrPCopy(szKey, aKey); 
    lItem := 0; 
    pData := StrAlloc(1024); 

    hError := RegOpenKey(MainKey, szKey, hRoot); 
    if hError = ERROR_SUCCESS then 
    begin 
    while (hError = ERROR_SUCCESS) do 
    begin 
     hError := RegEnumKey(hRoot, lItem, pData, 1024); 
     if (hError = ERROR_SUCCESS) then 
     begin 
      GetRegSubTree:=true; 
      aList.Add(StrPas(pData)); 
      Inc(lItem); 
     end; 
    end; 
    RegCloseKey(hRoot); 
    end; 
    StrDispose(szKey); 
    StrDispose(pData); 
end; 
+0

API의 그들 (TRegistry)에 대한 래퍼 클래스를 사용하여 완벽하게 좋은 쉽게있을 때? –

+1

@ Marjan Venema 가능한 실행 가능한 크기가 작은 경우에만 – Luthfi

+0

+1 DonnVall. 나를 위해, 나는 크기를 줄이기 위해 가장 원시/가장 간단한 방법을 사용합니다. – XBasic3000

관련 문제