Главная страница
    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.028 c
1-1096479492
Trim
2004-09-29 21:38
2004.10.17
Работа с TListView


3-1095836289
ol
2004-09-22 10:58
2004.10.17
как найти разницу между двумя временами


1-1096754425
Lakshmy
2004-10-03 02:00
2004.10.17
Печать данных из StringGrid


3-1095423240
pashaz
2004-09-17 16:14
2004.10.17
DBWARE Для ZEOS


14-1096471177
Nous Mellon
2004-09-29 19:19
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский