Подтвердить что ты не робот

Как разработчик, как следует использовать специальные папки в Windows Vista (и Windows 7)?

Где я должен сохранять данные, относящиеся к моему приложению? Где я должен сохранять файлы конфигурации? Где я должен сохранять временные файлы? Должен ли я делать это в "Документах"? "Данные приложения"? Etc...

Какова наилучшая практика для сохранения данных на диск (я думаю, лучше всего использовать специальные папки?!)?

4b9b3361

Ответ 1

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

CommonApplicationData: все, что не является "для пользователя".

LocalApplicationData: данные для пользователя и не роуминг. Например, все, где вы хотите ОБЕСПЕЧИТЬ, что он хранится только на этом компьютере (например, коды активации компьютера, часто также кэшированные/временные данные). Здесь будут использоваться стандартные временные файлы.

MyDocuments. Пользовательские данные, которые пользователь на самом деле идентифицирует как "распознаваемые отдельные документы".

Если вам не нравится имя файла, вы также можете использовать API tempfile для создания временного файла в каталоге temp. Вы НЕ должны делать это вручную. Например, в .NET вы можете использовать Path.GetTempFileName() для этой цели.

Ответ 2

От Программа логотипа клиента Windows 7:

  • По умолчанию приложения должны быть установлены в папку Program Files. Данные пользователя или данные приложения никогда не должны храниться в этом месте из-за разрешений безопасности % ProgramFiles% для собственных 32-разрядных и 64-битных приложений и% ProgramFiles (x86)% для 32-разрядных приложений, работающих на x64, соответственно, переписывая друг друга данными и настройками.
  • Все данные приложения, которые должны быть доступны пользователям на компьютере, должны храниться в ProgramData​​li >
  • Все данные приложения, исключительные для конкретного пользователя и не подлежащие совместному использованию с другими пользователями компьютера, должны храниться в "Пользователи\\AppData"
  • Никогда не пишите непосредственно в каталог "Windows" и/или подкаталоги. Используйте правильные методы для установки файлов, таких как шрифты или драйверы.
  • В установках "для каждой машины" пользовательские данные должны быть записаны при первом запуске, а не во время установки. Это связано с тем, что нет правильного местоположения пользователя для хранения данных во время установки. Попытки приложения изменить поведение ассоциации по умолчанию на уровне машины после установки будут безуспешными. Вместо этого значения по умолчанию должны быть заявлены на уровне каждого пользователя, что предотвращает перезапись нескольких пользователей по умолчанию.

Ответ 3

AppData должна быть автоматической конфигурацией и профилями, документами должны быть только файлы, сохраненные пользователем. Я бы поставил все, что могло бы быть полезно в нескольких системах в AppData/Roaming, и что-нибудь еще (специфичное для машины) в AppData/Local или LocalLow. Для временных файлов используйте каталог Temp.

Ответ 4

В целом, лучшие методы Windows должны следовать соответствующим переменным среды. Данные конфигурации, которые вы хотите придерживаться, должны идти в% APPDATA%, а временные файлы должны идти в% TEMP%.

Это имеет то преимущество, что не нарушайте ужасно, если Windows меняет вещи и уважает странные конфигурации, которые могут иметь люди.

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

Ответ 5

Кроме того, вы должны использовать SHGetFolderPath или SHGetKnownFolderPath (в Vista +), чтобы получить пути. Это предоставит вам правильное местоположение в текущей системе независимо от версии или языка текущей установки. Никогда не используйте какой-либо путь, который вы используете.