DAO 3.6和Win7 / Vista UAC问题

时间:2012-02-07 16:39:57

标签: database vb.net uac dao

我正在使用旧的DAO 3.6来连接Access数据库(使用mde扩展名)。当UAC为低/禁用时,应用程序在XP和Win7 / Vista上运行良好。但是当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 个答案:

答案 0 :(得分:1)

默认情况下,Access数据库以读写方式打开。此外,默认情况下,普通用户对C:\ProgramData没有写入权限。因为,当启用UAC时,您只是一个“常规用户”,它将无法工作。要解决此问题,您有以下选择:

  • 以管理员权限启动您的VB.NET应用程序(鼠标右键/以管理员身份运行)。

  • 更改C:\ProgramData\company上的NTFS权限,以便普通用户可以修改文件。

  • 共享只读模式打开数据库。这样,DAO不需要对文件的写权限( readonly ),也不需要创建ldb文件的权限( shared )。

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