2010-12-05 84 views
4

我讀過一點,將.NET 2.0 SQL CE數據庫放在安裝應用程序的程序文件目錄中是一個壞主意。我遇到了以下錯誤:訪問程序文件目錄中的SQL CE數據庫

不允許訪問數據庫文件。 [文件名= C:\ Program Files文件(x86)\ MyCompanyName \ MyApplicationName \ MyCEDatabaseName.sdf]

所以我聽說過,把它放在通用應用程序文件....我不知道那是什麼,我讀過安裝程序可能會刪除相同權限的文件。我還讀到人們已經將他們的文件移到那裏並出現問題。

當安裝程序在程序文件目錄中刪除文件時,是否可以更改程序文件目錄中的文件的ACL?我已經從MSI獲得應用程序的鉤子來收集和設置配置選項。我還沒有找到如何更改一個文件權限的好例子。

然後,我已經閱讀將其存儲在用戶的應用程序數據中,但是如果您正在安裝應用程序'for everyone'文件將放在哪裏?

感謝您的時間....困惑。

回答

2

我假設您使用的是MSI軟件包。在這種情況下,您可以使用已解析爲「C:\ ProgramData」的CommonAppDataFolder。

但是,這也是每臺機器的位置,因此它需要與Program Files相同的權限。我想你聽說過應用程序數據文件夾(AppDataFolder)是每個用戶的位置(類似於「C:\ Users \\ AppData \ Roaming」)。它沒有權限問題。

如果你想使用每臺機器的位置的解決方案是使用LockPermissions表: http://msdn.microsoft.com/en-us/library/aa369774(VS.85).aspx

這是一個有點複雜,因爲所有的許可標誌。因此,如果您的設置創作工具不提供對設置權限的支持,我建議採用更簡單的方法:使用xcacls.exe作爲自定義操作: http://support.microsoft.com/kb/318754

這樣所有用戶都可以訪問您的數據庫文件。