2010-12-05 2 views
4

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

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

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

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

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

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

ответ

2

Предполагаю, что вы используете пакет 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

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

 Смежные вопросы

  • Нет связанных вопросов^_^