Настройки разрешений ввода-вывода с помощью .net installer

StackOverflow https://stackoverflow.com/questions/18675

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

Лучший вариант - вообще не записывать данные в каталоги в разделе Program Files.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top