2012-02-07 67 views
1

我使用舊的DAO 3.6連接Access數據庫(使用mde擴展名)。當UAC處於低/禁用狀態時,App在XP和Win7/Vista上運行良好。但是當UAC打開時,出現以下錯誤:DAO 3.6和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

默認情況下,Access數據庫打開讀寫。另外默認情況下,普通用戶在C:\ProgramData上沒有寫權限。因爲當啓用UAC時,你只是一個「常規用戶」,它不會工作。爲了解決這個問題,你有以下選擇:

  • 用管理權限啓動你的VB.NET應用程序(鼠標右鍵/以管理員身份運行)。

  • 變化C:\ProgramData\company讓普通用戶可以修改文件的NTFS權限。

  • 開啓在數據庫共享只讀模式。這樣,DAO不需要對文件的寫權限(只讀),也不需要創建ldb文件的權限(共享)。

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

我不知道這是一種特權的問題。現在,我使用InstallShield在應用程序設置中爲此文件夾設置了Everyone權限,並且沒有問題:)。 – 2012-02-07 21:31:49