Q&A

  • registry에 대해서...???
procedure TForm1.Button1Click(Sender: TObject);

var

reg : Tregistry;

s:string;

begin

reg := Tregistry.Create;

reg.RootKey := HKEY_CLASSES_ROOT;



if reg.KeyExists('Photoshop.ActionsFiles') then begin

REG.OpenKey('Photoshop.ActionsFilesShellopencommand',true)

s:=reg.ReadString();

//showmessage(s);

end;

end;

포토샵이 깔린 디렉토리명을 찾고 싶어 레지스트리를 읽으려고 하는데

잘 안되서 글을 올립니다.

포토샵을 인스톨하면 레지스트리에 위의 디렉토리가 생기고

그곳에 실행화일의 경로가 있는데 어떻게 읽어야 할지를 몰라서리..

도와 주세요. 토요일 오전까지 끝내야 하는데..ㅠ.ㅠ





2  COMMENTS
  • Profile
    구창민 1999.12.11 13:38
    장일형 wrote:

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > reg : Tregistry;

    > s:string;

    > begin

    > reg := Tregistry.Create;

    > reg.RootKey := HKEY_CLASSES_ROOT;

    >

    > if reg.KeyExists('Photoshop.ActionsFiles') then begin

    > REG.OpenKey('Photoshop.ActionsFilesShellopencommand',true)

    > s:=reg.ReadString();

    > //showmessage(s);

    > end;

    > end;

    > 포토샵이 깔린 디렉토리명을 찾고 싶어 레지스트리를 읽으려고 하는데

    > 잘 안되서 글을 올립니다.

    > 포토샵을 인스톨하면 레지스트리에 위의 디렉토리가 생기고

    > 그곳에 실행화일의 경로가 있는데 어떻게 읽어야 할지를 몰라서리..

    > 도와 주세요. 토요일 오전까지 끝내야 하는데..ㅠ.ㅠ

    >

    >





    TRegistry에서 제공되는 메소드와

    간단한 사용법을 올려드리겠습니다.

    참고하셔서 즐거운 프로그래밍 하시길~



    ReadBinaryData 현재의 키와 관련된 바이너리 값을 얻는다.

    ReadBool 현재의 키와 관련된 Boolean값을 얻는다.

    ReadCurrency 현재의 키와 관련된 Currency값을 얻는다.

    ReadDate 현재의 키와 관련된 날짜값을 얻는다.

    ReadDateTime 현재의 키와 관련된 날짜와 시간값을 얻는다.

    ReadFloat 현재의 키와 관련된 실수값을 얻는다.

    ReadInteger 현재의 키와 관련된 정수값을 얻는다.

    ReadString 현재의 키와 관련된 문자열을 얻는다.

    ReadTime 현재의 키와 관련된 시간값을 얻는다.



    WriteBinaryData 현재의 키와 관련된 바이너리 값을 쓴다.

    WriteBool 현재의 키와 관련된 Boolean값을 쓴다.

    WriteCurrency 현재의 키와 관련된 Currency값을 쓴다.

    WriteDate 현재의 키와 관련된 날짜값을 쓴다.

    WriteDateTime 현재의 키와 관련된 날짜와 시간값을 쓴다.

    WriteFloat 현재의 키와 관련된 실수값을 쓴다.

    WriteInteger 현재의 키와 관련된 정수값을 쓴다.

    WriteString 현재의 키와 관련된 문자열을 쓴다.

    WriteTime 현재의 키와 관련된 시간값을 쓴다.





    //간단한 사용예제



    var Changminreg: Tregistry;

    begin

    Changminreg := Tregistry.create; //레지스트리의 객체를 생성한다.

    With reg do

    begin

    rootkey := HKEY_LOCAL_MACHINE; //루트키를 설정한다.

    openkey('softwaremicrosoftwindowsCurrentVersion', false);

    //키를 엽니다.두번째 파라메터는 키가 없으면 True일 경우 키를 생성시킨다.

    Readstring('읽고자 하는 키값') // 원하는 키 값을 읽을때..

    ReadInteger('읽고자 하는 정수형값')

    WriteInteger('데이타','값');//수치형을 레지스트리에 기록

    WriteString('데이타','값');//문자형을 레지스트리에 기록

    free;

    end;

    end;

    그리고 키를 삭제할때는 DeleteKey('키이름'); 메소드를 사용하시구..

    값이나 데이터를 삭제하고 할때는 DeleteValue('데이타이름'); 메소드를

    사용하시면 됩니다.





    그리고 아래는 레지스트리를 검색하는 예제입니다.

    참고하시길~~



    procedure TForm1.Button1Click(Sender: TObject);

    var

    reg: TRegistry;

    rInfo: TRegKeyInfo;

    aList: TStringList;

    i: Integer;

    begin

    reg := TRegistry.Create;

    aList := TStringList.Create;

    try

    reg.RootKey := HKEY_LOCAL_MACHINE;

    if reg.OpenKey('Software', 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(aList.Strings[i])

    end;

    end;

    end;

    finally

    reg.CloseKey;

    reg.Free;

    aList.Free;

    end;



    // HKEY_LOCAL_MACHINE의 Software에 'Borland'가 있는지 조사

    i := ListBox1.items.IndexOf('Borland');

    if i > -1 then

    ListBox1.ItemIndex := i;

    end;

  • Profile
    장일형 1999.12.11 20:03
    key 리스트 말구요 key 값을 알아야하는데요.

    readstring으로 잘 안되서..