![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рабочая папка приложения. [D6, 2000, XP]
opoloXAI © (2007-07-14 23:56:00)Добрый день.
Есть не мною писанное приложение. С помощью ветки реестра : HKEY_CLASSES_ROOT\...\Shell\Open\Command\{} = "C:\Program Files\...\prog.exe %1"
я ему через параметры командной строки посылаю имя редактируемого документа. Программа запускается, но думает, что её рабочая папка соответствует пути к открываемому документу (D:\Work\...). В результате - не находит своих библиотек, "выполняет недопустимую операцию" и ...
Вопрос: где в реестре (или самописным приложением (через промежуточное приложение передавать имя документа)) изменить путь к папке с программой?
Германн (2007-07-16 00:42:00) [1]
> sniknik © (15.07.07 10:31) [6]
>
> > А может просто те библиотеки поместить в "доступные" места?
> System32, например?
> лучше тогда путь программы к пользовательскому/системному
> path добавить. чтоб не засорять.
>
А как нынче обстоит дело с длиной переменной PATH? Отстал от жизни :(
Инс (2007-07-15 19:00:00) [2]
> вообще-то поиск dll файлов, из которых подгружаются функции,
> сначала производится в рабочей папке исполнительного файла,
> если там не находит, то потом идут системные папки System32.
Более точно - так (прямо из Рихтера копирую):
1. Каталог, содержащий ЕХЕ-файл.
2. Текущий каталог процесса.
3. Системный каталог Windows
4. Основной каталог Windows
5. Каталоги, указанные в переменной окружения PATH.
Shamansky_ne (2007-07-15 18:56:00) [3]вообще-то поиск dll файлов, из которых подгружаются функции, сначала производится в рабочей папке исполнительного файла, если там не находит, то потом идут системные папки System32.
Зачем было делать в программе привязку к пути библиотек, такому же как у документов, если он меняется и заведомо неизвестен, мне лично непонятно.
Anatoly Podgoretsky (2007-07-15 12:36:00) [4]> Johnmen (15.07.2007 01:43:04) [4]
> Есть не мною писанное приложение.
Которое запускает он
sniknik (2007-07-15 10:31:00) [5]Johnmen © (15.07.07 01:43) [4]
>> Есть не мною писанное приложение.
ну так запускает то он его сам из своей программы (иначе бы не мог править реестр)
> А может просто те библиотеки поместить в "доступные" места? System32, например?
лучше тогда путь программы к пользовательскому/системному path добавить. чтоб не засорять.
Германн (2007-07-15 02:24:00) [6]
> opoloXAI © (14.07.07 23:56)
>
> Добрый день.
> Есть не мною писанное приложение. С помощью ветки реестра
> : HKEY_CLASSES_ROOT\...\Shell\Open\Command\{} = "C:\Program
> Files\...\prog.exe %1"
> я ему через параметры командной строки посылаю имя редактируемого
> документа. Программа запускается, но думает, что её рабочая
> папка соответствует пути к открываемому документу (D:\Work\.
> ..). В результате - не находит своих библиотек, "выполняет
> недопустимую операцию" и ...
>
Что мне сомнительно всё это. :(
А может просто те библиотеки поместить в "доступные" места? System32, например?
Johnmen (2007-07-15 01:43:00) [7]
> Anatoly Podgoretsky © (15.07.07 01:07) [3]
> Иди как положено, запускать через CreateProcess, хоть тяжелее,
> но зато независимость
> Есть не мною писанное приложение.
Anatoly Podgoretsky (2007-07-15 01:07:00) [8]Иди как положено, запускать через CreateProcess, хоть тяжелее, но зато независимость
sniknik (2007-07-15 01:04:00) [9]> через промежуточное приложение передавать имя документа
создаешь ярлык, в нем есть указание рабочей папки независимое(должно быть) от передаваемого в параметре программы пути документа.
Johnmen (2007-07-15 00:15:00) [10]Положь в ред.док. в его раб.пап. Т.е. чтобы всё было одинаково для всего...