Q&A

  • 현재 사용중인 시스템의 Program Fils 디렉토리이름을 알 순 없나요
제목 그대로입니다..

만약에 현재 사용중인 os가 C: 에 깔려 있다면...보통 c:program files가 깔리잔아여..이렇든..실행중인 os의 program files디렉토리명을 얻어 오고 싶습니다..

어찌해야 합니까..?

2  COMMENTS
  • Profile
    최용일 2001.10.18 22:54
    안녕하세요. 최용일입니다.



    아래와 같이 하세요...



    IE v5.0이상에서...

    uses

    ..., ShlObj;

    const

    CSIDL_PROGRAM_FILES = 38;

    var

    Pidl: PItemIDList;

    Path: array[0..255] of Char;

    begin

    SHGetSpecialFolderLocation(Handle, CSIDL_PROGRAM_FILES, Pidl);

    SHGetPathFromIDList(Pidl, Path);

    ShowMessage('Program Files 폴더는 ' + Path + '입니다.');

    end;





    IE버전에 상관없이...

    uses

    ..., Registry;

    var

    Registry: TRegistry;

    Path: string;

    begin

    Registry := TRegistry.Create(HKEY_LOCAL_MACHINE);

    try

    Registry.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersion', False);

    Path := Registry.ReadString('ProgramFilesDir');

    ShowMessage('Program Files 폴더는 ' + Path + '입니다.');

    finally

    Registry.Free;

    end;

    end;



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



    Program Files wrote:

    > 제목 그대로입니다..

    > 만약에 현재 사용중인 os가 C: 에 깔려 있다면...보통 c:program files가 깔리잔아여..이렇든..실행중인 os의 program files디렉토리명을 얻어 오고 싶습니다..

    > 어찌해야 합니까..?

  • Profile
    Program Files 2001.10.30 19:25
    일단 답변에 감사 드립니다...

    근데..윈도우2000에서는 잘 되거든요...첫번째것이...

    윈도우98에서는 둘다 되질 않군요...



    최용일 wrote:

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

    >

    > 아래와 같이 하세요...

    >

    > IE v5.0이상에서...

    > uses

    > ..., ShlObj;

    > const

    > CSIDL_PROGRAM_FILES = 38;

    > var

    > Pidl: PItemIDList;

    > Path: array[0..255] of Char;

    > begin

    > SHGetSpecialFolderLocation(Handle, CSIDL_PROGRAM_FILES, Pidl);

    > SHGetPathFromIDList(Pidl, Path);

    > ShowMessage('Program Files 폴더는 ' + Path + '입니다.');

    > end;

    >

    >

    > IE버전에 상관없이...

    > uses

    > ..., Registry;

    > var

    > Registry: TRegistry;

    > Path: string;

    > begin

    > Registry := TRegistry.Create(HKEY_LOCAL_MACHINE);

    > try

    > Registry.OpenKey('SOFTWAREMicrosoftWindowsCurrentVersion', False);

    > Path := Registry.ReadString('ProgramFilesDir');

    > ShowMessage('Program Files 폴더는 ' + Path + '입니다.');

    > finally

    > Registry.Free;

    > end;

    > end;

    >

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

    >

    > Program Files wrote:

    > > 제목 그대로입니다..

    > > 만약에 현재 사용중인 os가 C: 에 깔려 있다면...보통 c:program files가 깔리잔아여..이렇든..실행중인 os의 program files디렉토리명을 얻어 오고 싶습니다..

    > > 어찌해야 합니까..?