![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файла в путях переменной окружения Path
Gu © (2011-05-08 02:14:00)Нет ли какой готовой функции, которая может это делать? Что-то типа
Fn:=FinfFileEnv(FileName, PathStr);
где
PathStr - значение переменной окружения Path (получить можно например так: http://www.delphirus.com/modules.php?name=Pages&pa=showpage&pid=1785)
FileName - искомое имя файла, например "my.dll"
а Fn - возвращаемый результат, например "c:\windows\System32\my.dll"
Anatoly Podgoretsky (2011-05-12 18:35:00) [1]А наши пытаются помочь, и если не получится, то хотя бы поразлекаться.
Anatoly Podgoretsky (2011-05-12 11:52:00) [2]А чего можно ответить на вопрос "Помогите не работает"
sniknik (2011-05-12 10:41:00) [3]> Они считают само собой обычным
http://bash.org.ru/quote/410956
ага, и тут на полном серьезе ответят - звоните в поддержку. или - вызовите мастера.
Anatoly Podgoretsky (2011-05-12 09:31:00) [4]> RTFM (11.05.2011 20:22:13) [13]
> Потому что им лениво выпытывать у автора, чего ему на самом деле надо. А
> тут - нет.
Они считают само собой обычным, что запросчик предоставляет всю необходимую
информацию, понятным языком и не скажут при этом что автор дурак
необразованый.
Anatoly Podgoretsky (2011-05-12 09:29:00) [5]
> RTFM (11.05.11 20:22) [13]
Даже если на каком то этапе будет работать правильно, это не значит, что и завтра так будет.
MBo (2011-05-12 07:48:00) [6]offtop:
Автору в копилку - лучше англоязычных благодарить так - Thanks, it works.
Им будет понятнее.
RTFM (2011-05-11 20:22:00) [7]> почему тут все по другому? не первый раз уже, просто обидно что на буржуинские форумы приходится лазить, а наши ... занимаются.
Потому что им лениво выпытывать у автора, чего ему на самом деле надо. А тут - нет.
Не надо писать всякую х.
Ну, заюзаешь ты SearchPath. Дальше что?
Ты учёл приоритет поиска? Нет.
Ты учёл настойку SafeSearch? Нет.
Ты учёл Dll Redirection? Нет.
Ты учёл SideBySide? Нет.
Итого - на пустом месте внёс в программу потенциальную брешь в безопасности, ибо грузишь DLL не оттуда, откуда её грузила бы система.
Мои поздравления с созданием очередной поделки.
Игорь Шевченко (2011-05-08 12:02:00) [8]SearchPath,
http://msdn.microsoft.com/en-us/library/aa365527(v=vs.85).aspx
Игорь Шевченко (2011-05-08 12:02:00) [9]SearhPath ?
sniknik (2011-05-08 11:07:00) [10]> Нашел ты десять mydll.dll в десяти разных местах - и что дальше?
он не найдет 10 этим способом, он найдет 1, ту которую бы использовал если бы просто сделал лоадлайбрари "не выделываясь".
но вопрос "что дальше?" остается, и еще вопрос, а ЗАЧЕМ это все? ну вот нашёл ты путь с которого лоадлайбрари загрузит dll а смысл? зачем лишние "телодвижения"?
> почему тут все по другому?
тут пытаются осмыслить проблему, а не заработать балов положительным ответом как на "потребительских" форумах. там на вопрос "дайте мне мыло и веревку" говорят "на". а здесь "зачем?" перед тем как дать, и приходится придумывать варианты типа "сейчас помоюсь и в горы!" попутно задумываясь "а реально ли мне именно этого нужно?".
Anatoly Podgoretsky (2011-05-08 10:14:00) [11]
> Gu (08.05.11 05:18) [6]
С тебя и "зачем" не вытянуть. Присоединяюсь к предыдущим анализом глупость и опасно.
Медвежонок Пятачок (2011-05-08 07:18:00) [12]Загружаются несколько длл с одинаковым именем,
Ну если они разные, но одинаково называются, то как ты их отличишь если найдешь все?
Нашел ты десять mydll.dll в десяти разных местах - и что дальше?
Gu (2011-05-08 05:44:00) [13]
Function EnvFNS(Fn: string): string;
var SPPath:Array[0..255] of char;PathPtr:PChar;
begin
if SearchPath(nil, PChar(Fn), nil, 255, SPPath, PathPtr)>0 then Result:=StrPas(SPPath) else Result:=Fn;
end;
пример использования:
Showmessage(EnvFNS('notepad.exe'));
Gu (2011-05-08 05:18:00) [14]ну это вы так думаете.
подсказали решение.
вот тут люди не спрашивают "зачем", не говорят "это тебе не надо", а сразу ответ пишут: http://stackoverflow.com/questions/5924755/file-search-in-paths-of-environment-variable-path
почему тут все по другому? не первый раз уже, просто обидно что на буржуинские форумы приходится лазить, а наши ... занимаются.
Германн (2011-05-08 03:40:00) [15]
> Gu (08.05.11 03:18) [4]
>
> У меня библиотеки динамически загружаются, потому нужен
> полный путь.
Бред.
Gu (2011-05-08 03:18:00) [16]У меня библиотеки динамически загружаются, потому нужен полный путь. Это както повлияет на ответ - есть такая функция или нет?
Германн (2011-05-08 02:55:00) [17]
> Почему а5 все сводится к вопросу "зачем"?
Потому, что не надо делать всё "через анус". DLL принято располагать либо в системной папке для dll, либо в папке с программой.
"Нужно знать полный путь." Ещё раз нафига?
P.S.
Ещё раз увижу а5 - отвечать более не буду.
Gu (2011-05-08 02:40:00) [18]Мне нужна. Загружаются несколько длл с одинаковым именем, которые могут лежать в определенном месте или в папке проге или в путях переменной path. Нужно знать полный путь.
Почему а5 все сводится к вопросу "зачем"? :)
Германн (2011-05-08 02:26:00) [19]
> Поиск файла в путях переменной окружения Path
А пардон, нафига такая функция нужна кому-то?
Path прописывается для того, чтобы можно было "запустить" исполняемый файл без указания пути к нему. Не запустился - значит либо нет файла, либо путь к нему не входит в Path.