Настройки разрешений ввода / вывода с использованием установщика .net - PullRequest
1 голос
/ 20 августа 2008

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

Ответы [ 2 ]

2 голосов
/ 22 августа 2008

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

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

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

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

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

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

0 голосов
/ 21 августа 2008

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

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

...