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

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

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

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

3 ответа

Решение

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

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

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

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

Я согласен с ответом Роберта Харви: сделайте это сами или напишите поставщика пользовательских настроек.

Вы всегда можете читать и писать свои собственные файлы конфигурации XML.

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

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