Где хранить данные приложений в Windows 7 и Vista - PullRequest
11 голосов
/ 25 февраля 2011

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

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

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

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

System.Environment.SpecialFolder.ApplicationData

Ответы [ 2 ]

10 голосов
/ 25 февраля 2011

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

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

2 голосов
/ 25 февраля 2011

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

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

...