Все качаем через Лису и запускаем из нее скаченные прожки.

Суть бага:
При запуске скаченной прожки из списка Загрузки сама Лиса не меняет переменную PWD (CurrentDirectory или Рабочая папка).


Для непосвященных поясняю.

При запуске программы ей присваивается переменные среды. (Что увидеть их, нужно в консоль ввести "set".) Так вот переменная PWD отвечает за Рабочию папку. То есть для Лисы она у многих = "c:\Program Files\Mozilla Firefox\", если вы сами ее не меняли. Сама программа может ее менять, но это редко нужно. Это и есть относительный путь.

При указании создать файл "new.txt" без указания абсолютного пути система поставит строку из PWD и для Лисы это будет "c:\Program Files\Mozilla Firefox\new.txt".

Проблема в том, что при запуске  прожки из Лисы ей автоматически присваивается Лисья PWD. В этоге программа может случайно испортить вам содержимое c:\Program Files\Mozilla Firefox\ (Особенно, если вы по глупости работаете с правами Админа)

Разработчики браузеров должны позаботится о задании правильной переменной PWD при открытии файлов.


Запостите на багзиллу плиз...

Это не переменные среды, а "current directory" - текущая рабочая директория, откуда запущена программа, а не путь, где лежит exшник проги, так что с точки зрения [firefox], имхо, всё верно.
1.Это прога кривая, если она вместо пути к своему exe берет "getcurrentdir". Допиливать шеллы, откуда она может запускаться из-за этой кривости не нужно, т.к. в работе других прог путькEXE часто не равен пути, откуда нужно запустить прогу. (Хотя бы cmd)
2.в Program Files вообще не нужно давать писать всяким разным неизвестным программам.

Buzzzzer, http://msdn.microsoft.com/en-us/library/ms682425.aspx изучи параметр LPCTSTR lpCurrentDirectory

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

Под Линь эта проблема менее актуальна.

30-03-2011 19:11:08

Buzzzzer пишет

т.к. в работе других прог путькEXE часто не равен пути, откуда нужно запустить прогу. (Хотя бы cmd)

Тут банальная работа консоли, когда файл должен быть создан по месту вызова, а не в папке самой проги (например ProgramFiles или /usr/bin/)

https://bugzilla.mozilla.org/show_bug.cgi?id=646486
за сам Английский не ручаюсь полностью, но вроде должны понять...

Всё же, я не согласен.
Где в http://msdn.microsoft.com/en-us/library/ms682425.aspx написано что lpCurrentDirectory нужно во избежании проблем ставить свой?
Там всего лишь написано, что эта фича позволяет переопределить рабочий каталог при старте, если это необходимо. Но они никого не обязывают это делать во избежания пролем.

Keepun пишет

Тут банальная работа консоли

Это ж пример. Ну, например, я периодически пользуюсь мелкими утилитами, которым через командную строку передаю что либо, и которые у меня расшарены в Path.
Пользуюсь в far или тоталкомандере, а это по сути тот же родительский процесс, как и [firefox], который будет вызывать "нашего подопытного".
К примеру, если зайти в Far в каталог с каким нибудь архивом и запустить unrar -e архив.rar, если процесс-предок будет менять lpCurrentDirectory на отличный от текущего то unrar попросту не найдет наш архив и придется всегда писать unrar e *путь к архиву*\архив.rar.  И зачем же?
Вместо этого программа должна различать понятия Working Directory, Home directory и путь запуска (http://msdn.microsoft.com/en-us/library/ms683197%28VS.85%29.aspx), чтоб не приходилось [firefox] или еще кому то страховатся за них.
p.s. Опять же это имхо, нечего меня минусовать за каждый пост...