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

Я работаю над приложением 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. Это решать вам.

Другие вопросы по тегам