Где хранить данные приложения в Windows 7 и Vista

Мое приложение, как и большинство других, должно хранить данные. Приложение ранее использовалось в XP только там, где оно сохраняло данные в Program Files. Теперь, когда наши клиенты переходят на Windows 7, мне пришлось обновить ее, чтобы данные хранились в новой папке. Я выбрал папку ApplicationData, так как думал, что мне будет разрешен доступ без необходимости UAC.

Теперь на некоторых машинах с Windows 7 это нормально, но на других доступ к папке невозможен, предположительно из-за разрешений, но при запуске с привилегиями администратора программа работает нормально.

Я использую не ту папку, или эти случаи являются отклонениями? В любом случае, что лучше всего подходит для такого рода вещей?

Я использую следующий C # SpecialFolder, чтобы получить расположение папки AppData.

System.Environment.SpecialFolder.ApplicationData

person Chris    schedule 25.02.2011    source источник


Ответы (2)


System.Environment.SpecialFolder.ApplicationData предназначен для каждого пользователя и перемещается. Это не похоже на то, что вы хотите. Похоже, вам нужны настройки для всей машины, поэтому следует использовать System.Environment.SpecialFolder.CommonApplicationData.

Поскольку CommonApplicationData используется совместно всеми пользователями, контроль доступа по умолчанию ограничен. По умолчанию обычные пользователи не могут писать в этом месте. Рекомендуется создать подпапку CommonApplicationData во время установки и назначить ей соответствующие параметры разрешающего контроля доступа.

person David Heffernan    schedule 25.02.2011
comment
Потребуется ли мне UAC для доступа к CommonApplicationData, как я ApplicationData? Также не означает ли это, что данные распределяются между всеми пользователями на одном ПК? - person Chris; 25.02.2011
comment
@Chris Разве это не означает, что данные распределяются между всеми пользователями одного компьютера? Ну да, но раньше вы хранили его в Program Files, который является общесистемным. - person David Heffernan; 25.02.2011

Дэвид прав. Насколько мне известно, также есть некоторая разница, если вы развертываете свое приложение с помощью ClickOnce или Installer: первый предоставляет несколько подмножеств разрешений, чем обычный установщик. Должен признаться, я в этом не разбираюсь.

Конечно, Program Files - это худшее место для хранения данных, даже со времен XP.

person Mario Vernari    schedule 25.02.2011
comment
Вы имеете в виду Program Files, ProgramData имя общей папки appdata на NT6 - person Anders; 25.02.2011
comment
Йа! ... У меня плохо с головой ... Спасибо, Андерс! - person Mario Vernari; 25.02.2011