Проблема с DAO 3.6 и Win7 / Vista UAC - PullRequest
1 голос
/ 07 февраля 2012

Я использую старый DAO 3.6 для подключения к базе данных Access (с расширением mde). Приложение отлично работает на XP и Win7 / Vista, когда UAC низкий / отключен. Но когда UAC включен, я получаю следующую ошибку:

Ядро базы данных Microsoft Jet не может открыть файл «C: \ ProgramData \ company \ db.mde». Он уже открыт исключительно другим пользователем, или вам необходимо разрешение для просмотра его данных.

Мой код:

'Connect to Database
dbE = New DAO.DBEngine()
dbT = dbE.OpenDatabase(Environment.GetFolderPath(
    Environment.SpecialFolder.CommonApplicationData) & "\company\db.mde")

1 Ответ

1 голос
/ 07 февраля 2012

По умолчанию базы данных Access открываются для чтения и записи.Также по умолчанию обычные пользователи не имеют прав записи C:\ProgramData.Поскольку, когда UAC включен, вы просто «обычный пользователь», он не будет работать.Чтобы это исправить, у вас есть следующие опции:

  • Запустите приложение VB.NET с правами администратора (правая кнопка мыши / Запуск от имени администратора).

или

  • Измените разрешения NTFS для C:\ProgramData\company, чтобы обычные пользователи могли изменять файлы.

или

  • Откройте базу данных в общий режим только для чтения .Таким образом, DAO не требует разрешения на запись в файл ( readonly ) и не требует разрешения для создания файла ldb ( shared ).

    dbT = dbE.OpenDatabase(Environment.GetFolderPath( 
        Environment.SpecialFolder.CommonApplicationData) & "\company\db.mde", 
        True, True) 
    
...