Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не могу понять как прога берет свои настройки. Берет из HKCU, а хочу чтоб из ini-файла
|
|||
|---|---|---|---|
|
#18+
Не знаю как начать. Но попробую. Консольное приложение. Начало грубо такое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Дык вот, прога (предполагается запуск под "CURRENT_USER") каким-то "волшебным" образом тащит свои настройки при запуске из следующей ветки реестра: Код: plaintext 1. Почему "волшебным", потому что я имея километры кода (есть еще библиотека куда ведут PCLASSINFO, PProcess, PCREATE_PROCESS) не могу проследить как оно это делает. И она сволочь их сразу видит, т.е. в реестре если например, в упомянутой ветке HKEY_CURRENT_USER\Software\Manufacturer\Proga\CurrentVersion\Options есть 1) строковый параметр "TestString" со значением "This is My String!!!" 2) параметр DWORD "TestBoolean" со значением 1 3) а например параметр "TestNoBool" вообще отсутствует То код следующего вида уже в самом начале main(): Код: plaintext 1. 2. 3. 4. 5. 6. выведет на экран следующее: Код: plaintext 1. 2. 3. Все бы ничего и жил бы дальше не копая как оно это делает. Но я хочу хранить настройки 1) не в реестре, а в INI-файле, 2) не в текущем юзере, а в общем месте Т.е. очевидное правильное место для этого суть: Код: plaintext 1. 2. 3. 4. По идее я знаком с ф-циями GetPrivateProfileString, GetPrivateProfileInt и умею вычислять {CommonAppDataFolder} т.е. в принципе я смогу наверно "забить ногами" в каком-то месте кода стандартный PConfigArgs myargs, и впаять туда параметры полученные моим методом. Но: у меня есть подозрения что механизм и так стандартный, т.е. вижу например такой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Т.е. не факт, что мне надо изобретать свой паравоз. Но вот не могу понять, как имеющийся паравоз заставить грузиться из ini. Есть подозрение, что он автоматом уже будет читать из какого-то ини, вопрос только из какого. И скорее всего не из "{CommonAppDataFolder}". Как все это копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 04:11 |
|
||
|
Не могу понять как прога берет свои настройки. Берет из HKCU, а хочу чтоб из ini-файла
|
|||
|---|---|---|---|
|
#18+
Иди в самое начало Main() Там видна инициализация PConfigArgs myargs(GetArguments()); Читай конструктор класса PConfigArgs и исходник функции GetArguments(). Где-то внутри них и есть вызовы для GetPrivateProfileInt/GetPrivateProfileString. Найдешь хоть один вызов - смотри на последний параметр. Это будет либо переменная, либо дефайн. Потом ищешь где эта переменная (дефайн) задаются и правишь как тебе нужно. Все просто и легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 07:31 |
|
||
|
Не могу понять как прога берет свои настройки. Берет из HKCU, а хочу чтоб из ini-файла
|
|||
|---|---|---|---|
|
#18+
White Owl, спасибо за ответ, буду пытаться понять. Задал такой же вопрос автору этого дела. Автор очень удивился авторI have not used PConfigArgs in may years. Interesting it still works. и даже накатал какой-то фикс: Changes to PConfigArgs so a derived class can alter the type of PConfig being used, e.g. file instead of registry. А мне в письме написал: авторSo, you can alter the PConfig being used, I have changed it from a simple member to a pointer. You can now create a derived class which can change the m_config member to be any of the other PConfig variants, e.g. to a file at a location of your choice . Подчеркнутая (мной) фраза особенно радует. Но чет пока ничего не соображаю. Позже взгляну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2014, 10:52 |
|
||
|
Не могу понять как прога берет свои настройки. Берет из HKCU, а хочу чтоб из ini-файла
|
|||
|---|---|---|---|
|
#18+
На самом деле, то что я хочу по замыслу делается в одно единственное действие: Код: plaintext 1. 2. 3. 4. 5. Но в коде SetConfigurationPath была мерзкая ошибка - двоеточие воспринималось как разделитель путей, для Win это неверно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Fixed using correct character (':' or ';') depending on platform for PATH style lists of directories. Ну и до кучи код функции GetConfigurationFile() в ptlib написан очень самодурно. Там получается что имя INI-файла должно совпадать с именем приложения. Т.е. если proga.exe, то proga.ini, а если я пытаюсь задать settings.ini либо config.ini, то GetConfigurationFile() возвращает пустую строку и местом поиска параметров становится дефолтный путь в реестре. Пришлось исправлять под себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 00:59 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38606256&tid=2019563]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
79ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 175ms |

| 0 / 0 |
