Как изменить расположение пользовательских настроек .NET

По умолчанию настройки сохраняются по адресу: C:\Documents and Settings\\Local Settings\Application Data\<Project Name>

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

Я попытался изменить область настроек на "приложение", но потом я не могу их изменить во время выполнения.

Ответ 1

Используя встроенное поведение по умолчанию, вы не можете!

В: Почему путь настолько неясен? Есть ли способ изменить/настроить это?

A: Алгоритм построения пути должен соответствовать определенным строгим требования с точки зрения безопасности, изоляции и надежности. В то время как мы попытался сделать путь так же легко можно обнаружить, используя дружественного, поставляемого приложения строк, невозможно сохранить путь совершенно прост без сталкиваются с такими проблемами, как столкновения с другими приложениями, spoofing и т.д.

LocalFileSettingsProvider не выполняет предоставить способ изменения файлов в какие настройки сохранены. Обратите внимание, что сам поставщик не определяет расположение файлов конфигурации в первом место - это конфигурация система. Если вам нужно сохранить настройки в другом месте для по какой-то причине, рекомендуемый способ напишите свой собственный SettingsProvider. Эта довольно просто реализовать, и вы можно найти образцы в .NET 2.0 SDK которые показывают, как это сделать. Иметь ввиду однако вы можете столкнуться с тем же упомянутых выше.

Я согласен с ответом Роберта Харви сделать это самостоятельно, или написать поставщик настраиваемых параметров.

Ответ 3

Существуют трудности с программным изменением настроек для всех пользователей (поскольку они поступают из файла exe.config, который обычно находится в программных файлах и, таким образом, защищен от доступа на запись в современных ОС). Вы можете попробовать сделать настройки в приложении, но затем использовать ConfigurationManager, чтобы запутаться с конфигурационным файлом, аналогично решению этого вопроса.