2010-07-16 5 views
3

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

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

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

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

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

+0

AppData - это место для этого. См. Также мой ответ http://stackoverflow.com/questions/3219255/why-do-files-get-placed-c-users-usernameappdata-local-virtualstore-program-fil/3219276#3219276 –

+1

Я знаю, что это правильное место , но как я могу затем заставить технологов-неграмотных пользователей отправить нам файл в случае возникновения проблемы? – drharris

+0

@ 0xA3 В идеале я мог бы исправить все ошибки как в нашем программном обеспечении, так и у поставщиков оборудования и драйверов 9-12, которые мы используем в нашем программном обеспечении, но тогда я бы не стал задавать этот вопрос. ;) Когда пользователи отправляют этот файл конфигурации, я могу обрабатывать каждый случай, который вызывает проблему, но многие вещи мы просто не можем предвидеть. Например, установка параметра одного устройства на 256 вызвала переполнение, хотя драйвер и пин-коды показали, что он должен подняться до 65k. Кикер - это то, что 257 отлично работает. – drharris

ответ

1

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

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 

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

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

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

+0

Пользователь действительно должен будет иногда редактировать его напрямую. Я даже не думал о том, чтобы поместить его в «Мои документы» ... Обычно это было бы абсурдной идеей, но поскольку эти компьютеры контролируются нами, это будет вполне приемлемое решение. – drharris

1

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

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

Смежные вопросы