как изменить расположение пользовательских настроек .NET - PullRequest
12 голосов
/ 25 марта 2010

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

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

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

Ответы [ 3 ]

13 голосов
/ 26 марта 2010

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

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

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

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

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

1 голос
/ 25 марта 2010

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

0 голосов
/ 25 марта 2010

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

...