2012-10-16 73 views
6

我有一個.NET 4應用程序(以混合模式)與System.Data.Sqlite(1.0.82)數據庫訪問加密數據庫。System.Data.SQLite慢連接非管理員用戶

當我將應用程序安裝到「c:\ program files \ myfolder」時,連接到sqlite數據庫文件很慢。日誌文件顯示它是延遲了幾秒的sqlite連接語句。

當我做了以下不會發生此問題:

  • 運行具有管理員權限的應用程序
  • 除C安裝任何其他地方:\ Program Files文件\
  • 將應用程序安裝到c: \ program files \,但將數據庫移動到另一個文件夾。

我不知道還有什麼能這樣做的原因...

回答

5

如果數據庫文件是在應用程序目錄,然後它最有可能的是,UAC是將其移動到」 ... APPDATA \ Local \ VirtualStore \ Program Files「目錄。最佳做法是創建您自己的appdata \ MyApp文件夾,並將原始數據庫從c:\ program files \ MyApp文件夾中複製出來。

+0

它的工作原理,謝謝 – matihuf

1

它有助於在只讀模式下打開數據庫。 (無論如何,您應該只保留程序文件夾中的只讀內容。)

只需將";Read Only=True"附加到連接字符串即可。

private const string CONN_TEMPL = "Data Source={0};Version=3;Read Only=True"; 
var conn = new SQLiteConnection(
    String.Format(CultureInfo.InvariantCulture, CONN_TEMPL, databasePath) 
); 
相關問題