Re[2]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 17.11.08 10:20
Оценка: 4 (3) +2
Здравствуйте, Lifewalker, Вы писали:

L>Чел хочет в папке с программой создать пару файлов!

L>Видимо, файлы данных или конфиги. Это нормально?
ДА!

L> Его не учили, что есть места для пользователя, а есть места для программ?

Вас не учили что должно быть так, как хочет пользователь?

L> Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...

А я уже давно хочу ржавой секирой убивать аффтароф, чьи творения интенсивно срут мне в Documents and Settings и не позволяют задать кастомный путь. Уж лучше пусть хранят все рядом с собой. Так куда удобнее.
Почему кто то решает за меня, что и где у меня должно лежать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Получить путь к папке где лежит exe файл
От: Lifewalker  
Дата: 17.11.08 03:34
Оценка: -5
Здравствуйте, Аноним, Вы писали:

А>Как можно получить путь папки где лежит моя программа?

А>Вообщем надо создать пару файлов в папке с программой, не могу понять как получить этот самый путь.
А>Заранее благодарен.

Коллеги, вы просмотрели, похоже, вторую строку вопроса. Чел хочет в папке с программой создать пару файлов! Видимо, файлы данных или конфиги. Это нормально? Его не учили, что есть места для пользователя, а есть места для программ? Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...
Re[7]: Получить путь к папке где лежит exe файл
От: Кодт Россия  
Дата: 17.11.08 17:04
Оценка: +3
Здравствуйте, CreatorCray, Вы писали:

К>>А конфиг, определяющий — писать а АппДата или рядом с экзешником — где его-то хранить? "Quis custodiet ipsos custodes?"

CC>да хотяб в том же реестре. Если ключа нет — пишет в аппдата. ключ есть — пишет туда куда указано.
CC>в самой винде ж например предусмотрели перенос интернет кэша и еще пачки папок. почему бы не сделать так для любой проги?

А я, меж тем, издевался
Правильный ответ — хранить рядом с экзешником, либо считать дефолтом размещение данных рядом с экзешником (а инсталлятор пусть в реестр пишет, что хранить нужно в АппДата).
Иное поведение ломает возможность создания портабельных программ. Ибо что это за портабельная программа, для которой нужно что-то в реестр писать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re: Получить путь к папке где лежит exe файл
От: nen777w  
Дата: 17.11.08 00:48
Оценка: :)
задается с частотой 1 раз в месяц, поиск рулит, аноним не рекомендуется
Re[6]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 17.11.08 16:05
Оценка: -1
Здравствуйте, Кодт, Вы писали:

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


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


К>А конфиг, определяющий — писать а АппДата или рядом с экзешником — где его-то хранить? "Quis custodiet ipsos custodes?"

да хотяб в том же реестре. Если ключа нет — пишет в аппдата. ключ есть — пишет туда куда указано.
в самой винде ж например предусмотрели перенос интернет кэша и еще пачки папок. почему бы не сделать так для любой проги?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Получить путь к папке где лежит exe файл
От: Lifewalker  
Дата: 18.11.08 05:23
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Мсье ничего не слышал про Portable-программы ? Какать в Documents and Settings (ну или в Users в параноидальной висте) крайне не рекомендуется, равно как и в реестр. Так что конфиг рядом вполне имеет право на жизнь.


Неа, никогда не слышал о таких странных программах. Слышал только краем уха, что портабельные программы бывают пишут их с какими-то жуткими дополнительными условностями, подгоняя под конкретную платформу. Ну, разве что Жаба-аппликухи в последнее время можно писать совершенно не думая о платформенной привязке. И конфиги там, ежели использовать Нетбинз (не знаю как в других средах разработки), сами себя пишут куда надо.
Получить путь к папке где лежит exe файл
От: Аноним  
Дата: 16.11.08 23:55
Оценка:
Как можно получить путь папки где лежит моя программа?
Вообщем надо создать пару файлов в папке с программой, не могу понять как получить этот самый путь.
Заранее благодарен.

17.11.08 18:31: Перенесено модератором из 'C/C++' — Кодт
Re: Получить путь к папке где лежит exe файл
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 17.11.08 01:07
Оценка:
Здравствуйте, Аноним, Вы писали:

GetModuleFileName( 0, ... )
Маньяк Робокряк колесит по городу
Re[2]: Получить путь к папке где лежит exe файл
От: _Ursus_  
Дата: 17.11.08 07:20
Оценка:
Здравствуйте, Lifewalker, Вы писали:

L>Коллеги, вы просмотрели, похоже, вторую строку вопроса. Чел хочет в папке с программой создать пару файлов! Видимо, файлы данных или конфиги. Это нормально? Его не учили, что есть места для пользователя, а есть места для программ? Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...


Че кипятимся-то ? Писать нельзя, читать — можно.
Мож, человек хотел там иметь файлы, которые прога только читает, и это абсолютно нормально.
Re[3]: Получить путь к папке где лежит exe файл
От: Lifewalker  
Дата: 17.11.08 08:15
Оценка:
Здравствуйте, _Ursus_, Вы писали:

_U_>Че кипятимся-то ? Писать нельзя, читать — можно.

_U_>Мож, человек хотел там иметь файлы, которые прога только читает, и это абсолютно нормально.

Вот пусть эти файлы туда и кладёт инсталлятор. Как получить путь к своей программе — тема заезженная до упора.
Но топикстартер хочет писать туда, от этого и кипятюся.
Re[3]: Получить путь к папке где лежит exe файл
От: Danchik Украина  
Дата: 17.11.08 11:45
Оценка:
Здравствуйте, CreatorCray, Вы писали:

[Skip]

L>> Его не учили, что есть места для пользователя, а есть места для программ?

CC>Вас не учили что должно быть так, как хочет пользователь?

L>> Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...

CC>А я уже давно хочу ржавой секирой убивать аффтароф, чьи творения интенсивно срут мне в Documents and Settings и не позволяют задать кастомный путь. Уж лучше пусть хранят все рядом с собой. Так куда удобнее.
CC>Почему кто то решает за меня, что и где у меня должно лежать?


Попробуйте пописать для параноидальной висты — перестанете хотеть.
Re[3]: Получить путь к папке где лежит exe файл
От: Roman Odaisky Украина  
Дата: 17.11.08 11:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Почему кто то решает за меня, что и где у меня должно лежать? :maniac:


Зайдем издалека.

Ты же использовал Unix?
До последнего не верил в пирамиду Лебедева.
Re[4]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 17.11.08 11:48
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

CC>>Почему кто то решает за меня, что и где у меня должно лежать?

RO>Зайдем издалека.
RO>Ты же использовал Unix?
Там такое же говно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 17.11.08 11:49
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

Отвечу тут для Danchik, потому как при попытке ответить на его сообщение сообщает что я не могу писать в топик "мусор".

Это не проблема. Просто надо дать простую возможность указать для каждой программы путь к ее данным. Пусть по умолчанию будет в аппдата, но дайте возможность это изменить.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Получить путь к папке где лежит exe файл
От: Аноним  
Дата: 17.11.08 14:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как можно получить путь папки где лежит моя программа?

А>Вообщем надо создать пару файлов в папке с программой, не могу понять как получить этот самый путь.
А>Заранее благодарен.

можно так:

std::string fn()
{
char buf[MAX_PATH];

HMODULE hModule = GetModuleHandle(NULL);
GetModuleFileName(hModule,buf, sizeof(buf));

std::string path(buf);
size_t pos = path.find_last_of('\\');

return path.substr(0, pos);
}
Re[3]: Получить путь к папке где лежит exe файл
От: x64 Россия  
Дата: 17.11.08 15:33
Оценка:
CC>А я уже давно хочу ржавой секирой убивать аффтароф, чьи творения интенсивно срут мне в Documents and Settings и не позволяют задать кастомный путь.

Это — идеология системы Windows. Вывод: Windows — не твоя система.
Re[5]: Получить путь к папке где лежит exe файл
От: Кодт Россия  
Дата: 17.11.08 15:48
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


А конфиг, определяющий — писать а АппДата или рядом с экзешником — где его-то хранить? "Quis custodiet ipsos custodes?"
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[2]: Получить путь к папке где лежит exe файл
От: Аноним  
Дата: 17.11.08 23:37
Оценка:
Здравствуйте, Lifewalker, Вы писали:

L>Коллеги, вы просмотрели, похоже, вторую строку вопроса. Чел хочет в папке с программой создать пару файлов! Видимо, файлы данных или конфиги. Это нормально? Его не учили, что есть места для пользователя, а есть места для программ? Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...


Мсье ничего не слышал про Portable-программы ? Какать в Documents and Settings (ну или в Users в параноидальной висте) крайне не рекомендуется, равно как и в реестр. Так что конфиг рядом вполне имеет право на жизнь.
Re[4]: Получить путь к папке где лежит exe файл
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 18.11.08 06:02
Оценка:
Здравствуйте, Lifewalker, Вы писали:

L>Неа, никогда не слышал о таких странных программах.


имеются ввиду программы, которые можно например таскать на флэшке и запускать на любом компе — очень удобно иметь всегда под рукой настроенные ICQ или почтовый клиент, естественно что при этом никаких реестров и documents and settings — все настройки в файле рядом с программой
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[8]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 18.11.08 08:26
Оценка:
Здравствуйте, Кодт, Вы писали:

К>>>А конфиг, определяющий — писать а АппДата или рядом с экзешником — где его-то хранить? "Quis custodiet ipsos custodes?"

CC>>да хотяб в том же реестре. Если ключа нет — пишет в аппдата. ключ есть — пишет туда куда указано.
CC>>в самой винде ж например предусмотрели перенос интернет кэша и еще пачки папок. почему бы не сделать так для любой проги?
К>А я, меж тем, издевался
К>Правильный ответ — хранить рядом с экзешником, либо считать дефолтом размещение данных рядом с экзешником
Я имел в виду путь к конфигу хранить можно и в реестре, для параноидальных систем типа свисты.

К>(а инсталлятор пусть в реестр пишет, что хранить нужно в АппДата).

+1
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Получить путь к папке где лежит exe файл
От: Аноним  
Дата: 19.11.08 09:16
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Правильный ответ — хранить рядом с экзешником, либо считать дефолтом размещение данных рядом с экзешником (а инсталлятор пусть в реестр пишет, что хранить нужно в АппДата).

Есть вариант в реестр вообще не гадить, а просто ключик командной строки предусмотреть. Есть ключик — нас честно проинсталлировали (а инсталлятор создал ярлык для запуска с ключиком), ищем/создаём конфиг в Documents and Settings/Users. Нету ключика — похоже нас с флешки запускают или устанавливали копированием, конфиг ищем/создаём рядом. Ещё вариант без всяких ключиков — проверять тип носителя с которого нас запускают и если он DRIVE_REMOVABLE — автоматом проявлять портабельность, т.е. искать/создавать конфиг рядом.
Кстати, есть крайний вариант — вообще без файла конфига и ключей реестра — всё через командную строку, правда менять ярлык запуска запаришься, да и некузяво. Впрочем, когда параметров немного, вполне может сгодиться.
Re[9]: Получить путь к папке где лежит exe файл
От: Кодт Россия  
Дата: 19.11.08 10:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Кодт, Вы писали:


К>>Правильный ответ — хранить рядом с экзешником, либо считать дефолтом размещение данных рядом с экзешником (а инсталлятор пусть в реестр пишет, что хранить нужно в АппДата).

А>Есть вариант в реестр вообще не гадить, а просто ключик командной строки предусмотреть. Есть ключик — нас честно проинсталлировали (а инсталлятор создал ярлык для запуска с ключиком), ищем/создаём конфиг в Documents and Settings/Users. Нету ключика — похоже нас с флешки запускают или устанавливали копированием, конфиг ищем/создаём рядом. Ещё вариант без всяких ключиков — проверять тип носителя с которого нас запускают и если он DRIVE_REMOVABLE — автоматом проявлять портабельность, т.е. искать/создавать конфиг рядом.
А>Кстати, есть крайний вариант — вообще без файла конфига и ключей реестра — всё через командную строку, правда менять ярлык запуска запаришься, да и некузяво. Впрочем, когда параметров немного, вполне может сгодиться.

Ключик неудобно: появится возможность запускать так и этак. Тем более, если виндоуз ассоциирует приложение с типом файлов (это можно штатно сделать любому юзеру, а не в реестре ковыряться).

Можно проверять наличие конфига в аппдата/реестре; если нет — то считать приложение портабельным.
С другой стороны, а если человек со своей флешкой пришёл на машину, где уже создан аккаунт... Или если человеку хочется иметь несколько сборок?

Так что самый симпатичный вариант — это рядом с программой держать файл "самый первичный конфиг", в котором прописаны условия размещения основного конфига
— в общих юзерах
— в текущем юзере
— в папке запуска
— в произвольной папке
Это буквально одна строчка, с абсолютным, относительным или макросным путём.
Скажем, %MYPROGRAM% означает путь к экзешнику, а %APPDATA%, %USERPROFILE% и %ALLUSERSPROFILE% — штатные переменные окружения виндоуза (XP; про 2K, NT и 9* затруднюсь сказать).

И более того: можно сделать бат-файл
:::: определение каталога, где запущен данный файл (маленькая хитрость)
for %%F in (%0) do set THISDIR=%%~dpF
set THISDIR=%THISDIR:~0,-1%


:::: раскомментировать одно из:
:::: для всех
:: set MYPROGRAMCONFIG=%ALLUSERSPROFILE%\Application Data\MyProgram
:::: для текущего
:: set MYPROGRAMCONFIG=%APPDATA%
:::: для портабельного
:: set MYPROGRAMCONFIG=%THISDIR%\Config1
:::: для произвольного
:: set MYPROGRAMCONFIG=c:\MyProgConfig2

:::: далее запускаем программу, а она будет смотреть на переменную окружения MYPROGRAMCONFIG
MyProgram.exe
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re: Получить путь к папке где лежит exe файл
От: sfinks12  
Дата: 23.11.08 17:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как можно получить путь папки где лежит моя программа?

А>Вообщем надо создать пару файлов в папке с программой, не могу понять как получить этот самый путь.
А>Заранее благодарен.


LPTSTR GetExecutable()
{
    HMODULE hModule = ::GetModuleHandle(NULL);
    LPTSTR  filename = (LPTSTR)malloc(MAX_PATH* sizeof(TCHAR));
    ::GetModuleFileName(hModule, filename, MAX_PATH);
    return filename;
}


А пригодится это может когда ты хочешь например апгрейднуть свои бинарики. Правда в Висте это не так просто надо сначала админских прав попросить.
Re[3]: Получить путь к папке где лежит exe файл
От: ZAMUNDA Земля для жалоб и предложений
Дата: 26.11.08 16:00
Оценка:
Здравствуйте, CreatorCray, Вы писали:

L>> Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...

CC>А я уже давно хочу ржавой секирой убивать аффтароф, чьи творения интенсивно срут мне в Documents and Settings и не позволяют задать кастомный путь. Уж лучше пусть хранят все рядом с собой. Так куда удобнее.
Насчёт сранья я ниже сказал, а насчёт custom пути согласен, порой бесит до неприличия.

CC>Почему кто то решает за меня, что и где у меня должно лежать?

Ну почему ж, ты можешь настроить путь для своего профиля и все проги будут "срать" в это место. У меня, например, для этого отдельный хард. Там торренты на дополнительном и пол-свопника с профилями на основном разделе. А масдай и прочее на другом харде. Так что куда удобнее перенастроить расположение Document and Settings чем ломать голову над раздувшейся папкой с прогой какой-нить.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[4]: Получить путь к папке где лежит exe файл
От: CreatorCray  
Дата: 27.11.08 08:38
Оценка:
Здравствуйте, ZAMUNDA, Вы писали:

CC>>Почему кто то решает за меня, что и где у меня должно лежать?

ZAM>Ну почему ж, ты можешь настроить путь для своего профиля
Профиль давным давно перенесен с С. Причем его подпапки (инеткэш и проч.) тоже раскиданы в более удобные места.

ZAM>все проги будут "срать" в это место.

Мне не надо чтоб они вообще гадили в профиль. Мне надо чтобы каждая прога гадила исключительно в отведенное ей место. Не в общую помойку, а для каждой проги — свое место.
Практически все старые проги так и делают. А вот с новыми гемор.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.