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

Разница между "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);

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

Существуют ли рекомендации по использованию этих мест? И я оставляю себя открытым для проблем, если я выбираю неправильное местоположение?

4b9b3361

Ответ 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 для неперемещающихся профилей.