Авозапуск из реестра. Проблема с путём ...
От: demidov2  
Дата: 26.01.05 07:22
Оценка:
Программа создает ключ в реестре для запуска вместе с системой. При запуске она должна читать файлы из своего каталога, она читает из C:\. При простом запуске из своего каталога все нормально. Почему при запуске из реестра, при старте системы, программа не знает свой каталог?

27.01.05 07:15: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re: Авозапуск из реестра. Проблема с путём ...
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 26.01.05 07:27
Оценка:
Здравствуйте, demidov2, Вы писали:

D>Программа создает ключ в реестре для запуска вместе с системой. При запуске она должна читать файлы из своего каталога,


почему она должна?
Re: Авозапуск из реестра. Проблема с путём ...
От: Burz  
Дата: 26.01.05 07:31
Оценка:
Здравствуйте, demidov2, Вы писали:

D>Программа создает ключ в реестре для запуска вместе с системой. При запуске она должна читать файлы из своего каталога, она читает из C:\. При простом запуске из своего каталога все нормально. Почему при запуске из реестра, при старте системы, программа не знает свой каталог?


GetModuleFileName ?
Re: Авозапуск из реестра. Проблема с путём ...
От: tarkil Россия http://5209.copi.ru/
Дата: 26.01.05 07:34
Оценка:
Здравствуйте, demidov2, Вы писали:

D>Программа создает ключ в реестре для запуска вместе с системой. При запуске она должна читать файлы из своего каталога, она читает из C:\. При простом запуске из своего каталога все нормально. Почему при запуске из реестра, при старте системы, программа не знает свой каталог?


Что значит "знает свой каталог"? У работающего процесса есть такое понятие, как текущий каталог (см. SetCurrentDirectory). Если Вы запускаете программу из Проводника, текущим каталогом указывается тот, который сейчас в Проводнике открыт. Если запускаете ярлыком, там есть спецполе для текущего каталога. Если из реестра — текущим будет C:\.

В любом случае, если Вам надо как-то ссылаться на файлы в каталоге установки, надо его определять тем или иным способом и явно указывать при открытии файлов. Если Вы открываете файлы без указания пути, они будут открыты из текущего каталога, а он может быть любым.

Узнать каталог, откуда запущен exeшник можно, выделив из результата GetModuleFileName каталог. Или взяв инфу из реестра, куда она пишется при установке.
--
wbr, Peter Taran
Re[2]: Авозапуск из реестра. Проблема с путём ...
От: demidov2  
Дата: 26.01.05 07:34
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, demidov2, Вы писали:


D>>Программа создает ключ в реестре для запуска вместе с системой. При запуске она должна читать файлы из своего каталога,


OE>почему она должна?


Здравствуйте. Потому что я ее так написал. Она загружает список ListView.
Re[2]: Авозапуск из реестра. Проблема с путём ...
От: demidov2  
Дата: 26.01.05 07:42
Оценка:
Здравствуйте, tarkil.

Спасибо за подробный ответ. Да, я открываете файлы без указания пути. Жаль, что текущий каталог зависит от способа запуска. Придется делать GetModuleFileName.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.