Недавно я создал программу на С ++ для Windows, которая при запуске считывает некоторые файлы, в которых хранятся пользовательские конфигурации. Если программа запускается в первый раз, она сохраняет параметры, заданные пользователем, и создает файлы. Когда я отлаживаю его в visual studio, он работает как положено.
Поэтому я приступил к созданию установки для установки, я использовал Inno Setup. Моя программа требовала запуска при запуске, поэтому я использую следующий код, это с сайта inno http://www.jrsoftware.org/iskb.php?startwithwindows. Моя проблема в том, что когда программы запускаются при запуске, эти файлы не читаются и не создаются, но если я закрываю программу и запускаю программу с помощью значка на рабочем столе, она читает и создает файлы de.
Итак, мой вопрос, есть ли что-то в сценарии Inno, что позволяет ему читать файлы? может быть проблема с классом fstream ?, может быть решение кода
Заранее спасибо.
Я последовал совету Майкла и использовал папку APPDATA с подпапкой Roaming, и теперь программа считывает файлы конфигурации и запускается, как и ожидалось, спасибо за помощь !!
Из вышеупомянутых комментариев вы говорите, что храните файлы конфигурации в той же папке, что и .exe, и ваше приложение может создавать файлы при запуске из Visual Studio, но не при установке в папку «Program Files (x86)» или C: / root.
Похоже, вы столкнулись с проблемами разрешений UAC (контроль доступа пользователей). Папка «Program Files (x86)» как минимум, и я считаю, что C: / (root) также требует прав администратора для записи. Это было не так с Windows XP и старше; это с современными версиями. Возможно, вы работаете в Visual Studio с правами администратора и не знаете об этом и разрешаете права администратора при установке, но затем приложение не запускается с правами администратора, поэтому оно не может выполнять запись в эти расположения.
Попробуйте запустить ваше (установленное) приложение от имени администратора (щелкните файл правой кнопкой мыши и выберите «Запуск от имени администратора»). Если это работает, то вы идете: вы должны всегда запускать его как администратор, если вы хотите, чтобы он мог хранить файлы конфигурации в том же каталоге, что и .exe, или иначе (гораздо лучшее решение) хранить ваши файлы конфигурации в подкаталог с соответствующим именем% APPDATA%, в который пользователь, запустивший ваше приложение, всегда сможет писать без прав администратора.
Других решений пока нет …