|
이재득 님이 쓰신 글 :
: 안녕하세요
:
: TStrings* strGetValue;
: TRegistry* Registry = new TRegistry();
:
: Registry->RootKey = HKEY_LOCAL_MACHINE;
: Registry->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ABC", false);
: Registry->GetValueNames(strGetValue);
:
: 이렇게 하면요.. ...ABC 안에 있는 여러 Key 들이 있는데 여기서 GetValueNames 하면 어떤 Key 의 Value 를 얻어오는 겁니까?
:
: 그리고 위에처럼 실행했을 때 오류가 나요.
: 오류 이미지 첨부파일에 넣었습니다.
:
: 제가 원하는 것은요.. ...ABC 안에 'TEST' 라는 키에 들어가있는 Value 를 얻어오고 싶습니다.
: 레지스트리 이미지 첨부파일에 넣었습니다.
:
: 중요해서요.. 꼭 답변해주세요. ㅠㅠ
ABC 키에 속한 Value들의 이름을 얻는 것입니다.
레지스트리는 외형상 디스크 드라이브의 디렉터리와 같은 형식입니다.
디렉터리에 대응하는 것이 키이고 파일에 대응하는 것이 Value라고 보시면 됩니다.
특정 디렉터리 안에 하위디렉터리도 있고 파일도 있을 수 있듯이 레지스트리의 특정 키 안에는 하위 키도 있고 Value도 있을 수 있습니다.
ABC 안의 TEST 키에 있는 Value 이름들을 가져오려면 OpenKey할 때 그 키를 지정해주셔야 합니다.
Registry->OpenKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ABC\\TEST", false);
오류가 나는 것은 strGetValue가 할당된 메모리를 가리키고 있지 않기 때문입니다.
한편, TStrings는 추상클래스이므로 그 인스턴스를 생성할 수 없습니다.
TStrings를 상속받은 클래스 중에는 TStringList가 있는데 이를 사용하면 됩니다.
TStringList* strGetValue = new TStringList;
|