Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Поиск файла в реестре   Найти похожие ветки 

 
BRemB   (2004-09-14 10:44) [0]

Здравствуйте, Мастера! У меня така задача, мне необходимо найти путь к файлу на диске, он прописан в реестре. Так вот, как зная имя файла и ключ в реестре, найти путь к файлу на диске?


 
begin...end ©   (2004-09-14 21:22) [1]

Или я чего-то не понял, или всё очень просто.

var
 Reg: TRegistry;
 FileName: String;  // Имя файла, которое тебе известно (как я понял)
 FilePath: String;  // Путь к файлу (полное имя), который тебе нужно получить
 KeyName: String;   // Имя ключа, который тебе известен (как я понял)
 List: TStringList; // Список названий параметров в ключе
 I: Integer;

begin
 ...
 Reg := TRegistry.Create;
 List := TStringList.Create;
 try
   // Корень
   Reg.RootKey := HKEY_CURRENT_USER; // или HKEY_LOCAL_MACHINE, или...
   // Ключ
   if Reg.OpenKey(KeyName, False) then
   begin
     // Для данного ключа получаем список параметров, находящихся в нём
     Reg.GetValueNames(List);
     for I := 0 to List.Count - 1 do
       if Reg.GetDataType(List[I]) = rdString then
         if Pos(FileName, List[I]) > 0 then
         // Надо подумать над проверкой: просто Pos тут может и не подойти, тебе виднее
         begin
           FilePath := List[I];
           Break;
         end;
   end;
 finally
   Reg.Free;
   List.Free;
 end;
end.


P.S. Не проверял.


 
begin...end ©   (2004-09-14 21:28) [2]

Ой, извиняюсь.

Вместо

if Pos(FileName, List[I]) > 0 then

нужно:

if Pos(FileName, Reg.ReadString(List[I])) > 0.

Соответственно, вместо

FilePath := List[I];

нужно

FilePath := Reg.ReadString(List[I]);

Ну или сначала читаем в переменную, а потом уже это. Ну, ты понял, в общем :-)


 
BRemB   (2004-09-15 08:20) [3]

Спасибо, все работает!!!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.029 c
14-1096031914
Koala
2004-09-24 17:18
2004.10.17
Вопрос по IBExpert


1-1096532602
awp
2004-09-30 12:23
2004.10.17
Invalid Pointer Operation при вызове DLL


3-1095619050
Dio
2004-09-19 22:37
2004.10.17
Компанент


14-1096358962
GH@ST
2004-09-28 12:09
2004.10.17
Как более грамотно решить задачу??


4-1094909921
InfMag
2004-09-11 17:38
2004.10.17
Блокировшик





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский