Где хранить пользовательские файлы конфигурации - PullRequest
3 голосов
/ 16 июля 2010

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

Короче говоря, мы наконец-то обнаружили, что в Windows 7 (а иногда и в Vista) есть проблема с записью в каталог приложения (в частности, что-либо из Program Files).Теперь, если бы это был обычный файл конфигурации, я бы просто сохранил его в папке APPDATA пользователя, но это не нормально.Мы выполняем это на наших собственных инструментах, и неправильная конфигурация - это 99% причин, по которым у клиентов возникают проблемы с запуском нашего программного обеспечения.Поэтому нам нужно, чтобы этот файл был доступен, чтобы они могли легко найти его и отправить нам по электронной почте.Appdata достаточно сложен для того, чтобы опытные пользователи могли найти его, а тем более не очень технологичных людей.

Мы также попытались запустить его от имени администратора и сделать права доступа к папкам широко открытыми (у нас есть контроль над каждым компьютером, на котором он работает).никогда не будет работать на машине какого-то случайного человека).Но иногда они работают, а иногда нет.

Хуже всего то, что когда я записываю файл обратно, он даже не выдает ошибку;он просто записывает его во временный каталог, срок действия которого истекает в неизвестный момент времени.Через несколько недель у нашего пользователя возникнет проблема, и файл конфигурации все испорчен.

Итак, мой вопрос: где мне хранить этот файл, если не в Program Files?Должен ли я в любом случае просто поместить его в APPDATA и создать небольшую утилиту, которая автоматически отправит нам электронное письмо в случае возникновения проблемы?Или я могу оставить его в Program Files, но изменить какое-то конкретное разрешение или раздел реестра, чтобы он мог нормально работать?

Ответы [ 2 ]

1 голос
/ 16 июля 2010

Для этих пользователей вы можете создать кнопку, которая откроет этот каталог.Вы можете поместить его в незаметном месте, куда позже сможете их направить.

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

1 голос
/ 16 июля 2010

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

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

В противном случае вы можете поместить его в Мои документы:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

это в Program Files не очень хорошая идея.Как вы обнаружили, существуют проблемы с разрешениями, даже если вы работаете от имени администратора.

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