Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, Кодт, Вы писали:
К>>Правильный ответ — хранить рядом с экзешником, либо считать дефолтом размещение данных рядом с экзешником (а инсталлятор пусть в реестр пишет, что хранить нужно в АппДата).
А>Есть вариант в реестр вообще не гадить, а просто ключик командной строки предусмотреть. Есть ключик — нас честно проинсталлировали (а инсталлятор создал ярлык для запуска с ключиком), ищем/создаём конфиг в 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>>
Здравствуйте, Аноним, Вы писали:
А>Как можно получить путь папки где лежит моя программа?
А>Вообщем надо создать пару файлов в папке с программой, не могу понять как получить этот самый путь.
А>Заранее благодарен.
LPTSTR GetExecutable()
{
HMODULE hModule = ::GetModuleHandle(NULL);
LPTSTR filename = (LPTSTR)malloc(MAX_PATH* sizeof(TCHAR));
::GetModuleFileName(hModule, filename, MAX_PATH);
return filename;
}
А пригодится это может когда ты хочешь например апгрейднуть свои бинарики. Правда в Висте это не так просто

надо сначала админских прав попросить.
Здравствуйте, CreatorCray, Вы писали:
L>> Он не врубается, что так делать нельзя, ну или по меньшей мере нелогично! Господи, куда катимся...
CC>А я уже давно хочу ржавой секирой убивать аффтароф, чьи творения интенсивно срут мне в Documents and Settings и не позволяют задать кастомный путь. Уж лучше пусть хранят все рядом с собой. Так куда удобнее.
Насчёт сранья я ниже сказал, а насчёт custom пути согласен, порой бесит до неприличия.
CC>Почему кто то решает за меня, что и где у меня должно лежать? 
Ну почему ж, ты можешь настроить путь для своего профиля и все проги будут "срать" в это место. У меня, например, для этого отдельный хард. Там торренты на дополнительном и пол-свопника с профилями на основном разделе. А масдай и прочее на другом харде. Так что куда удобнее перенастроить расположение Document and Settings чем ломать голову над раздувшейся папкой с прогой какой-нить.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Здравствуйте, ZAMUNDA, Вы писали:
CC>>Почему кто то решает за меня, что и где у меня должно лежать?
ZAM>Ну почему ж, ты можешь настроить путь для своего профиля

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