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

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

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

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

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

System.Environment.SpecialFolder.ApplicationData

Ответ 1

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

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

Ответ 2

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

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