Как создать настраиваемое действие для изменения разрешения файла

Я работаю над приложением C ++ для Windows. Я создал установщик для этого проекта с использованием Visual Studio 2012. В этом проекте также есть несколько файлов конфигурации, которые копируются в папку установки (c: \ program files \). При запуске приложения в этом каталоге установки также создается один файл журнала.
Теперь проблема в том, что когда я устанавливаю приложение в системе Windows 7, которая имеет права администратора, все работает нормально. Но, когда я устанавливаю это в системе, которая не имеет прав администратора, ни мое приложение не может прочитать конфигурационный файл, присутствующий в текущем каталоге, ни файл журнала генерируется.

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

1

Решение

Вам нужно решить, хотите ли вы, чтобы ваше приложение имело привилегии администратора или нет, потому что только приложение с привилегиями администратора может изменять / читать конфигурационный файл и создавать файл журнала в подкаталоге «Program Files».

Если вы согласны с этим, то создайте приложение, которое при запуске откроет приглашение UAC, которое запрашивает привилегии администратора. Для этого откройте страницы свойств проекта и перейдите в «Linker-> Manifest File», затем установите для «уровня выполнения UAC» значение requireAdministrator, С другой стороны, если вы считаете это излишним, я предлагаю вам изменить свое приложение, чтобы создать каталог в папке пользователя. Эта папка будет использоваться для хранения файла конфигурации и файла журнала. Наиболее распространенным подходом является создание папки в C:\Users\some_user\AppData\Local,

Обратите внимание, что я хотел бы предложить последний подход, поэтому нет необходимости давать привилегии администратора приложения, чтобы просто сохранить конфигурацию и файл журнала в «Program Files». Тем не менее, я недостаточно знаком с вашим приложением, может быть, лучше использовать подсказку UAC. Это решать вам.

1

Другие решения

Других решений пока нет …