Разница между "SpecialFolder.LocalApplicationData" и "SpecialFolder.ApplicationData"?
В моей системе %AppData%
приводит к ApplicationData
, который равен C:\Users\<USER>\AppData\Roaming
Но есть и C:\Users\<USER>\AppData\Local
И для некоторой путаницы D:\Users\<USER>\AppData\LocalLow
string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Мой вопрос в том, в каком из этих мест мое приложение будет сохранять свои данные?
Существуют ли рекомендации по использованию этих мест? И я оставляю себя открытым для проблем, если я выбираю неправильное местоположение?
Ответы
Ответ 1
Папка Roaming
копируется между машинами при включении перемещаемых профилей (в среде домена). Используйте его для данных приложения, которые вы хотите разделить между машинами. Но не храните большие файлы там - ИТ-отделы не нравятся, когда вы это делаете, и это увеличивает время, необходимое пользователю для входа в систему и выхода из системы при копировании файлов.
Папка Local
не копируется между машинами. Используйте его для данных приложения, специфичных для машины.
Папка LocalLow
используется для задач с низким уровнем привилегий (например, Internet Explorer). Вам не нужно беспокоиться об этом.
Для файлов, которые пользователь сохранил, вы должны поместить их (по умолчанию) в папку Documents
.
Ответ 2
В соответствии с MSDN разница заключается в том, что LocalApplicationData
остается на локальном компьютере и не перемещается... ApplicationData
выполняет перемещение, например, если пользователь регистрируется в домене с другого компьютера, он будет синхронизирован...
LocalLow
относится к конкретным ситуациям типа BHO, работающим в "Защищенном режиме" IE...
Для стандартного приложения всегда используйте ApplicationData
. Используйте LocalApplicationData
для вещей, которые НЕ должны перемещаться вместе с пользователем...
Ответ 3
От MSDN - Environment.SpecialFolder Enumeration:
ApplicationData - каталог, который служит в качестве общего репозитория для данных для конкретного пользователя для текущего пользователя. Роуминг-пользователь работает на нескольких компьютерах в сети. Перемещающийся профиль пользователя хранится на сервере в сети и загружается в систему, когда пользователь входит в систему.
LocalApplicationData Каталог, который служит в качестве общего репозитория для данных, специфичных для приложения, которые используются текущим пользователем без роуминга.
Короче говоря, используйте ApplicationData
для перемещаемых профилей и LocalApplicationData
для неперемещающихся профилей.