2012-02-07 2 views
1

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

Механизм базы данных 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

По умолчанию базы данных 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) 
    
+0

Я не знал, что это проблема привилегий. Теперь я установил разрешение «Все» на эту папку при установке приложения с помощью InstallShield и без проблем :). –