Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить путь к файлу 
:(
    Опции темы
NieL
Дата 20.5.2008, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: 1
Всего: 1



Добрый вечер господа. Интересует вопрос: можно ли, зная имя файла, каким-нибудь способом определить где он лежит в системе (есть догадки что надо рыться в реестре).
PM MAIL   Вверх
Riply
Дата 21.5.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 3
Всего: 32



Цитата(NieL @  20.5.2008,  23:43 Найти цитируемый пост)
можно ли, зная имя файла, каким-нибудь способом определить где он лежит в системе (есть догадки что надо рыться в реестре). 


Переформулируй вопрос. Не понятно что ты имеешь ввиду.

P.S. В реестр, конечно, можно запихать файл, но вряд ли кто-то этим занимается  smile 

PM MAIL   Вверх
Данкинг
Дата 21.5.2008, 00:24 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



extractfilepath ?? smile  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
NieL
Дата 21.5.2008, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 10.2.2008

Репутация: 1
Всего: 1



Вообщемто имееется имя EXE файла (к примеру WINWORD.EXE - и все). Как зная только эту информацию определить путь к файлу (если такое вообще возможно). 
PM MAIL   Вверх
Данкинг
Дата 21.5.2008, 00:38 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Код

extractfilepath ('winword.exe');



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
aktuba
Дата 21.5.2008, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(Данкинг @ 21.5.2008,  01:38)
Код

extractfilepath ('winword.exe');

Для Word.exe может и прокатит, для readme.txt точно нет.

Задача просто не выполнимая, если система не знает этот файл "в лицо".


--------------------
user posted image
PM MAIL WWW Skype   Вверх
SneG0K
Дата 21.5.2008, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 1
Всего: 54



А может парню надо просто найти этот файл? Тогда
FindFirst()FindNext()FindClose()
PM WWW Skype   Вверх
Alexeis
Дата 21.5.2008, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Часто программы при установке записывают путь к себе в переменные окружения, тогда следует перебрать все переменные окружения и проверить есть ли файл по этим путям.

Добавлено через 1 минуту и 28 секунд
  Если программа вызывается из командной строки по 'winword.exe', то одно из двух, либо текущей директорией указана правильная папка, либо эта папка есть среди переменных окружения.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
aktuba
Дата 21.5.2008, 10:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(Alexeis @  21.5.2008,  08:53 Найти цитируемый пост)
Часто программы при установке записывают путь к себе в переменные окружения, тогда следует перебрать все переменные окружения и проверить есть ли файл по этим путям.

Добавлено через 1 минуту и 28 секунд
  Если программа вызывается из командной строки по 'winword.exe', то одно из двух, либо текущей директорией указана правильная папка, либо эта папка есть среди переменных окружения. 


Вот и я о том же...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
morpheyushka
Дата 21.5.2008, 11:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



А вобще, лучше бы хозяин темы изложил тут свою идею - может мы ему альтернативное решение придумаем smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
Dmitry1987
Дата 21.5.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Вот наброски, пока ищуться не все EXEшники, надо дорабатывать.

Код

procedure Tform_Test.cmp_btn_pathClick(Sender: TObject);
begin
  with cmp_lb_app do
    if ItemIndex <> -1 then
      FPath := Test.GetAppPath(Items[ItemIndex]);
  cmp_edt_path.Text := FPath;
end;


Код

function GetAppPath(const FileName: string): string;
var
  L: TStringList;
  R: TRegistry;
  i: Integer;
  Buf: PChar;
  PathS, PathW: string;
begin
  L := TStringList.Create;
  try
    R := TRegistry.Create;
    try
      R.RootKey := HKEY_LOCAL_MACHINE;
      R.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\' + FileName);
      try
        R.GetValueNames(L);
        for i := 0 to L.Count - 1 do
          if L[i] = 'Path' then
            Result := IncludeTrailingBackSlash(R.ReadString(L[i]));
      finally
        R.CloseKey;
      end;
      if Result = '' then
      begin
        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
          Result := IncludeTrailingBackslash(PathS)
        else
        if FileExists(IncludeTrailingBackslash(PathW)
             + FileName) then
          Result := IncludeTrailingBackslash(PathW)
        else

       { + если файл всех ненайден во всех случаях }

        end;
    finally
      R.Free;
    end;
  finally
    L.Free;
  end;

PM MAIL   Вверх
aktuba
Дата 21.5.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Dmitry1987, разве автор топика сказал, что надо именно .exe???
К тому же, ты ищешь в реестре. Я, например, ни одну свою программу там не прописываю.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1205 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.