Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
В SDK нашёл определение текущего каталога как  каталога, из которого запущено приложение, кроме явно изменённого
Это неверное определение, может SDK старый?

Цитата:
В то же время  одним из параметров функции CreateProcess(), с помощью которой система создаёт  новый процесс, является указатель на строку, задающую текущий каталог для  создаваемого процесса. Если этот параметр равен NULL, в качестве текущего каталога  для нового процесса задаётся текущий каталог родительского процесса
Да, это верно. Правда, это не система так делает, а реализуется в функции CreateProcess и тех функциях, что вызываются из нее. Если при непосредственном создании процесса указать, что у него текущий каталог NULL - так оно и будет.

Цитата:
функция GetCurrentDirectory()  возвратила "C:\Documents and Settings\имя_учётной_записи" при автозапуске программы  из реестра. Значит, либо этот каталог явно указан в функции CreateProcess(), либо это  текущий каталог родительского (системного) процесса, создающего мой процесс
1-е - вряд ли.
2-е - вероятнее всего, ибо запускает процессы оттуда сам Explorer, какой у него текущий каталог? У того Explorer-а им будет папка в профиле, именно та, что Вы указали, правда, я сейчас проверил для internat.exe - там еще добавлен подкаталог с рабочим столом.

Цитата:
Возникает вопрос - а почему система не задаёт в качестве текущего каталог, в котором  расположен исполняемый файл?
Еще раз, система сама это не делает, это устанавливаетс запускающая программа. Если из проводника даблкликом запускать процесс, то Explorer запускает его с тем текущим каталогом, что открыт (если только не нашелся ярлык, корректирующий запуск, например, pif).

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

Автозагрузка из папки автозагрузки на самом деле реализуется через запуск ярлыка, так что это попадает под то, что выше написано.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 13:31, 31-01-2003 | #6