제목대로 지정한 파일의 풀패스 찾기에 대한 질문입니다.
하고자 하는 기능은 'abc.tmp'라는 파일이 주어졌을 때,
이 파일의 위치를 찾고자 함입니다.
하드디스크 전체를 찾게되면 찾는 시간이 소요되는데,
일단 속도 문제는 고려대상에서 제외합니다.
(한번 찾은 후에는 값을 갖고 있을 예정)
게시판의 내용을 찾아보면
ExtractFilePath, ExtractFileDir, GetFullPathName 등을 사용하라...
고 나와 있는데,
ExtractFilePath와 ExtractFileDir 는 파일명만 주어졌을 경우
올바른 결과를 도출하지 못하며,
GetFullPathName는 주어진 파일이 있는 경로가 나오지 않고,
델파이 프로그램의 경로가 나옵니다.
순수하게 파일명만 알고 있을 경우 그 파일명이 위치한 절대경로를 알고 싶습니다.
(정확히 표현하자면 특정프로그램이 설치되어 있는 절대경로를 찾고자 함입니다. 실행파일명을 갖고서 레지스트리에서 절대경로를 찾는다면 더 빠르겠죠?)
방법을 알려주세요~~~
혹시나 문제점이 있으면 알려주세요~~ ^^
var
Reg: TRegistry;
KeyName : String;
begin
KeyName := 'SOFTWARE\Microsoft\windows\currentversion\App Paths\Excel.exe';
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
//OpenKey(KeyName, False);
OpenKeyReadOnly(KeyName);
FExtDescription := ReadString('');
end;
finally
showmessage(FExtDescription);
Reg.Free;
end;
end;