Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2008, 00:44   #1
NeiL
Пользователь
 
Регистрация: 28.11.2007
Сообщений: 49
По умолчанию Извлечь путь из EXE

Добрый вечер господа. Интересует вопрос: можно ли, зная только имя файла, каким-нибудь способом определить где он лежит в системе (есть догадки что надо рыться в реестре).
NeiL вне форума Ответить с цитированием
Старый 21.05.2008, 08:46   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Только поиском по диску. Ведь не все файлы прописываются в реестре!
FindFirst, FindNext тебе в помощь.
FaTaL вне форума Ответить с цитированием
Старый 21.05.2008, 09:00   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Судя по тому, что автор хочет рыть в реестре, ему нужно определить куда установлена определенная программа, и установлена ли вообще.
Верно, искать нужно в реестре. Вопрос обсуждался, в поиск.

Если программа не требует установки, в реестре ее не будет, тогда поиск по диску.

Автору: изъясняйтесь понятнее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.05.2008, 18:44   #4
NeiL
Пользователь
 
Регистрация: 28.11.2007
Сообщений: 49
По умолчанию

Вот набросал тут: (ищем EXE-файл, например WINWORD.EXE).
Код:
function GetAppPath(const FileName: string): string;
var
  L: TStringList;
  R: TRegistry;
  i: Integer;
  Buf: PChar;
  PathS, PathW, FilePath: string;
begin
  L := TStringList.Create;
  try
    R := TRegistry.Create;
    try
      R.RootKey := HKEY_CLASSES_ROOT;
      if R.KeyExists('\Applications\' + FileName + '\shell\open\command') then
        R.OpenKeyReadOnly('\Applications\' + FileName + '\shell\open\command')
      else
      if R.KeyExists('\Applications\' + FileName + '\shell\edit\command') then
        R.OpenKeyReadOnly('\Applications\' + FileName + '\shell\edit\command');
        try
          FilePath := R.ReadString('');
        finally
          R.CloseKey;
        end;
      finally
        R.Free;
      end;
      GetMem(Buf, MAX_PATH);
      try
        GetSystemDirectory (Buf, MAX_PATH);
        PathS := StrPas(Buf);
        GetWindowsDirectory(Buf, MAX_PATH);
        PathW := StrPas(Buf);
      finally
        FreeMem(Buf);
      end;
      if FileExists(IncludeTrailingBackslash(
           PathS) + FileName) then
        FilePath := IncludeTrailingBackslash(PathS)
      else
      if FileExists(IncludeTrailingBackslash(
           PathW) + FileName) then
        FilePath := IncludeTrailingBackslash(PathW)
  finally
    L.Free;
  end;
  if FilterSymbolsFilePath(FilePath) = '' then
    raise Exception.CreateFmt(
      'File % not found  in Windows regedit', [FileName]);
  Result := FilterSymbolsFilePath(FilePath);
end;
NeiL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Извлечь иконку из EXE? Алексей_C Общие вопросы Delphi 22 27.12.2008 23:34
Как извлечь имя скачиваемого файла Crazyman Работа с сетью в Delphi 0 01.07.2008 02:34
Извлечь имена приложений NeiL Win Api 3 07.05.2008 14:33
Извлечь путь к exe файлу lenysik Общие вопросы Delphi 8 09.12.2007 22:46
Извлечь песни из NFS Pro street DeN1308 Софт 0 24.11.2007 15:38