Доступ к базе данных SQL CE в каталоге Program Files - PullRequest
4 голосов
/ 06 декабря 2010

Я немного читал, что помещать базу данных .NET 2.0 SQL CE в каталог программных файлов, в котором установлено приложение, - плохая идея. Я сталкиваюсь со следующей ошибкой:

Доступ к файлу базы данных не разрешен. [Имя файла = C: \ Program Files (x86) \ MyCompanyName \ MyApplicationName \ MyCEDatabaseName.sdf]

Итак, я слышал, поместите его в файлы Common Application .... Я не уверен, где это находится, и я прочитал, что установщик может удалить файл с теми же разрешениями. Я также читал, что люди перенесли туда свои файлы и у них были проблемы.

Можно ли изменить списки ACL для файла в каталоге программных файлов, когда установщик удалит его туда? У меня уже есть хуки в приложение от MSI для сбора и настройки параметров конфигурации. Я не нашел хороший пример того, как изменить разрешения для одного файла.

Тогда я прочитал, чтобы сохранить его в данных приложения пользователя, но если вы устанавливаете приложение «для всех», куда файл пойдет?

Спасибо за ваше время .... растерян.

1 Ответ

2 голосов
/ 06 декабря 2010

Я предполагаю, что вы используете пакет MSI. В этом случае вы можете использовать CommonAppDataFolder с разрешением «C: \ ProgramData».

Однако это также местоположение для каждой машины, поэтому для него требуются те же привилегии, что и для программных файлов. Я думаю, что вы слышали о папке Application Data (AppDataFolder), которая является местоположением для пользователя (что-то вроде «C: \ Users \\ AppData \ Roaming»). У него нет проблем с разрешением.

Если вы хотите использовать расположение для каждой машины, решение состоит в том, чтобы использовать таблицу LockPermissions: http://msdn.microsoft.com/en-us/library/aa369774(VS.85).aspx

Это немного сложно из-за всех флагов разрешений. Поэтому, если ваш инструмент разработки настроек не предлагает поддержку для установки разрешений, я предлагаю более простой подход: используйте xcacls.exe в качестве настраиваемого действия: http://support.microsoft.com/kb/318754

Таким образом, все пользователи могут получить доступ к вашему файлу базы данных.

...