Разница между «SpecialFolder.LocalApplicationData» и «SpecialFolder.ApplicationData»? - PullRequest
39 голосов
/ 14 марта 2012

В моей системе %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);

У меня вопрос: в какое из этих мест мое приложение должно сохранять свои данные?

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

Ответы [ 3 ]

49 голосов
/ 15 марта 2012

Папка Roaming копируется между компьютерами, когда включены перемещаемые профили (в доменной среде). Используйте его для данных приложения, которыми вы хотите поделиться между компьютерами. Но не храните там большие файлы - ИТ-отделам не нравится, когда вы делаете это, и это увеличивает время, необходимое пользователю для входа в систему и выхода из нее, когда файлы копируются.

Папка Local не копируется между компьютерами. Используйте его для данных приложения, относящихся к компьютеру.

Папка LocalLow используется для задач с низким уровнем привилегий (например, Internet Explorer). Вам не нужно беспокоиться об этом.

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

9 голосов
/ 15 марта 2012

Согласно MSDN разница в том, что LocalApplicationData остается на локальном компьютере и не перемещается ... ApplicationData выполняет роуминг, например, если пользователь входит в домен с другого компьютера. будет синхронизироваться ...

LocalLow относится к конкретным ситуациям, таким как BHO, работающая в «защищенном режиме» IE ...

Для стандартного применения всегда используйте ApplicationData. Используйте LocalApplicationData для вещей, которые НЕ ДОЛЖНЫ перемещаться с пользователем ...

4 голосов
/ 15 марта 2012

Из MSDN - Среда. Перечисление SpecialFolder :

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

LocalApplicationData Каталог, который служит общим хранилищем для данных конкретного приложения, которые используются текущим, не перемещающимся пользователем пользователем.

Вкратце, используйте ApplicationData для перемещаемых профилей и LocalApplicationData для не перемещаемых профилей.

...