2008-08-20 9 views
1

Я создаю программу, которая будет установлена ​​с использованием проекта установки .net. Программа записывает файлы настроек в свой каталог в директории Program Files. Он считает, что есть некоторые активные настройки каталога, которые не позволят приложению перейти в этот каталог, если ограниченный пользователь запускает программу. Не удается ли изменить настройки папки приложения через установку, чтобы это не было проблемой?Параметры разрешения ввода-вывода с использованием установщика .net

ответ

2

Запись в папку Program Files - действительно плохая идея, вы должны предположить, что это место «только для чтения» после установки.

Сохранение пользовательских настроек в программных файлах вызывает проблемы, если сразу два компьютера используют компьютер (например, службы терминалов), какие настройки следует сохранить, хотите ли вы, чтобы другие пользователи знали ваши настройки? Что произойдет, если ваша программа записывает настройки в файл как пользователь A, но пользователь B не может редактировать файл? Пользователь B может иметь доступ к каталогу, но не читать/удалять файл предпочтений, поскольку он принадлежит пользователю A.

Программы legacy win9x часто записываются в папку программных файлов, Windows Vista на самом деле делает некоторые опрятные обманки, чтобы эти программы работают. Когда ваша программа записывает файл, vista на самом деле помещает его в другое место, доступное только для этого пользователя. То же самое делается для записи реестра в HKLM (или так я обнаружил после нескольких часов отладки ...), и Server 2008 делает то же самое.

Если вы нуждаясь для сохранения пользовательских настроек лучшей альтернативой будет сохранить настройки в папку Data Application (Переменная окружения% APPDATA%)

Если настройки широки системы, то административный пользователь должен установите их после установки или при первом запуске, и они не должны быть перезаписаны ограниченным пользователем.

Чтобы ответить на ваш вопрос - ДА, есть способ сделать то, что вы просили. Но это плохая идея, она небезопасна и, вероятно, вызовет проблемы в долгосрочной перспективе.

-1

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

Лучшим вариантом является не писать в каталоги под программными файлами.