Q&A

  • 레지스트리의 서브키의 값을 읽어올때요~~~
리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.

아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..

아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..

답변 꼬옥 부탁드립니다요~~ ㅠㅠ



procedure TItems.Button2Click(Sender: TObject);

var

Reg: TRegistry;

rInfo: TRegKeyInfo;

aList: TStringList;

gList: TStringList;

i: Integer;

begin

reg := TRegistry.Create;

aList := TStringList.Create;

try

reg.RootKey := HKEY_CLASSES_ROOT;

if reg.OpenKey('CLSID', False) then

if reg.GetKeyInfo(rInfo) then begin

if rInfo.NumSubKeys > 0 then begin

reg.GetKeyNames(aList); //서브키 항목들 구하기

for i := 0 to rInfo.NumSubKeys -1 do begin

listbox1.items.Add(reg.ReadString(aList.strings[i]));

end;

end;

end;

finally

reg.CloseKey;

reg.Free;

aList.Free;

end;

end;



3  COMMENTS
  • Profile
    최용일 2001.03.08 05:56
    안녕하세요. 최용일입니다.



    aList에 키들이 들어 있는데 왜 또 reg.ReadString(aList.strings[i]);를 하셨는지?



    ReadString은 키값을 얻는게 아니라 항목(Data)에 연결된 값(Value)를 얻는것입니다.





    > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > for i := 0 to rInfo.NumSubKeys -1 do begin

    > listbox1.items.Add(aList.strings[i]); <<<<<<<<<<<<<<<<<<<<<<<<<<<



    ^^ 항상 즐코하세요...

    eocn wrote:

    > 리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.

    > 아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..

    > 아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..

    > 답변 꼬옥 부탁드립니다요~~ ㅠㅠ

    >

    > procedure TItems.Button2Click(Sender: TObject);

    > var

    > Reg: TRegistry;

    > rInfo: TRegKeyInfo;

    > aList: TStringList;

    > gList: TStringList;

    > i: Integer;

    > begin

    > reg := TRegistry.Create;

    > aList := TStringList.Create;

    > try

    > reg.RootKey := HKEY_CLASSES_ROOT;

    > if reg.OpenKey('CLSID', False) then

    > if reg.GetKeyInfo(rInfo) then begin

    > if rInfo.NumSubKeys > 0 then begin

    > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > for i := 0 to rInfo.NumSubKeys -1 do begin

    > listbox1.items.Add(reg.ReadString(aList.strings[i]));

    > end;

    > end;

    > end;

    > finally

    > reg.CloseKey;

    > reg.Free;

    > aList.Free;

    > end;

    > end;

    >

  • Profile
    eocn 2001.03.09 00:16
    제가 원하는게 바로.. 지적하신대로..

    항목들의 value 를 아는 거였거덩요~

    구래서 readstring을 쓴거구요.. ^^;;

    CLSID 밑에 있는 항목들의 value를 리스트 박스에 다 나타내게 하는 방법 혹시 아시면..

    흐윽.. 부탁 드립니다......





    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > aList에 키들이 들어 있는데 왜 또 reg.ReadString(aList.strings[i]);를 하셨는지?

    >

    > ReadString은 키값을 얻는게 아니라 항목(Data)에 연결된 값(Value)를 얻는것입니다.

    >

    >

    > > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > > for i := 0 to rInfo.NumSubKeys -1 do begin

    > > listbox1.items.Add(aList.strings[i]); <<<<<<<<<<<<<<<<<<<<<<<<<<<

    >

    > ^^ 항상 즐코하세요...

    > eocn wrote:

    > > 리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.

    > > 아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..

    > > 아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..

    > > 답변 꼬옥 부탁드립니다요~~ ㅠㅠ

    > >

    > > procedure TItems.Button2Click(Sender: TObject);

    > > var

    > > Reg: TRegistry;

    > > rInfo: TRegKeyInfo;

    > > aList: TStringList;

    > > gList: TStringList;

    > > i: Integer;

    > > begin

    > > reg := TRegistry.Create;

    > > aList := TStringList.Create;

    > > try

    > > reg.RootKey := HKEY_CLASSES_ROOT;

    > > if reg.OpenKey('CLSID', False) then

    > > if reg.GetKeyInfo(rInfo) then begin

    > > if rInfo.NumSubKeys > 0 then begin

    > > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > > for i := 0 to rInfo.NumSubKeys -1 do begin

    > > listbox1.items.Add(reg.ReadString(aList.strings[i]));

    > > end;

    > > end;

    > > end;

    > > finally

    > > reg.CloseKey;

    > > reg.Free;

    > > aList.Free;

    > > end;

    > > end;

    > >

  • Profile
    최용일 2001.03.09 03:55
    CLSID키에는 항목이 없는데요. 기본값밖에는.. 그 밑에 있는 키들이 몇개씩의 항목을



    가지고 있는데... 쩝~ 그것들을 얻을려면 그 키를 열어야 해요...



    eocn wrote:

    > 제가 원하는게 바로.. 지적하신대로..

    > 항목들의 value 를 아는 거였거덩요~

    > 구래서 readstring을 쓴거구요.. ^^;;

    > CLSID 밑에 있는 항목들의 value를 리스트 박스에 다 나타내게 하는 방법 혹시 아시면..

    > 흐윽.. 부탁 드립니다......

    >

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > aList에 키들이 들어 있는데 왜 또 reg.ReadString(aList.strings[i]);를 하셨는지?

    > >

    > > ReadString은 키값을 얻는게 아니라 항목(Data)에 연결된 값(Value)를 얻는것입니다.

    > >

    > >

    > > > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > > > for i := 0 to rInfo.NumSubKeys -1 do begin

    > > > listbox1.items.Add(aList.strings[i]); <<<<<<<<<<<<<<<<<<<<<<<<<<<

    > >

    > > ^^ 항상 즐코하세요...

    > > eocn wrote:

    > > > 리스트박스에 HKEY_CLASSES_ROOT의 CLSID 의 서브키의 값을 보여주려고 하는데요.

    > > > 아래와 같이 코딩을 했는데... 리스트 박스에 아무값도 나오지 않는데 그 이유를 모르겠네요..

    > > > 아래의 소스에서 제가 잘못한 부분을 알려주심 정말 감사하겠습니다..

    > > > 답변 꼬옥 부탁드립니다요~~ ㅠㅠ

    > > >

    > > > procedure TItems.Button2Click(Sender: TObject);

    > > > var

    > > > Reg: TRegistry;

    > > > rInfo: TRegKeyInfo;

    > > > aList: TStringList;

    > > > gList: TStringList;

    > > > i: Integer;

    > > > begin

    > > > reg := TRegistry.Create;

    > > > aList := TStringList.Create;

    > > > try

    > > > reg.RootKey := HKEY_CLASSES_ROOT;

    > > > if reg.OpenKey('CLSID', False) then

    > > > if reg.GetKeyInfo(rInfo) then begin

    > > > if rInfo.NumSubKeys > 0 then begin

    > > > reg.GetKeyNames(aList); //서브키 항목들 구하기

    > > > for i := 0 to rInfo.NumSubKeys -1 do begin

    > > > listbox1.items.Add(reg.ReadString(aList.strings[i]));

    > > > end;

    > > > end;

    > > > end;

    > > > finally

    > > > reg.CloseKey;

    > > > reg.Free;

    > > > aList.Free;

    > > > end;

    > > > end;

    > > >