[英]Getting “Access to database file is not allowed” error when creating a build for 64-bit windows machines
我正在創建一個現有的Windows桌面應用程序的新版本,該應用程序已經運行了好幾年。 該應用程序使用SqlServerCe數據庫,該數據庫安裝在計算機的DataDirectory中。 正在創建新版本的應用程序以與64位計算機兼容。 我已經將代碼遷移到Macbook上運行Windows 10的Parallels VM,我正在使用Visual Studio 2017構建新版本。構建工作正常(我使用安裝向導項目來創建安裝文件)。 但是,當我安裝應用程序時,第一次嘗試訪問數據庫時出錯。
錯誤是:不允許訪問數據庫文件。 [1884,文件名= C:\\ ProgramData \\ CompanyName \\ ApplicationName \\ AppDataBase.sdf,SeCreateFile]。
.sdf未標記為只讀。 如果我轉到.sdf文件,一旦安裝它,並給Everyone(使用文件瀏覽器)提供讀,寫和修改權限,那么應用程序可以訪問該文件並且沒有錯誤。 但是,如果我嘗試使用File.SetAccessControl在我的代碼中執行此操作,則會再次出現訪問錯誤。 我沒有看到任何方法在安裝過程中使用安裝向導功能(文件系統視圖)設置.sdf文件的權限。
這是我正在使用的連接字符串:
<connectionStrings>
<add name="ApplicationName.Properties.Settings.ApplicationNameConnectionString"
connectionString="Data Source=|DataDirectory|AppDataBase.sdf"
providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
在使用Visual Studio 2010構建並在x86計算機上部署時,這很方便。 提前感謝您提供任何建議。
聽起來它可能是UAC
確保您正在運行exe(而不是msi),並且在安裝程序項目的LaunchConditions中將Privileged設置為true
還要確保通過右鍵單擊並選擇“以管理員身份運行”來運行應用程序
實質上 - 你的位置是錯誤的。 對於非管理員用戶,Windows 7(及更高版本)的文件夾%SystemDrive%\\ProgramData\\MyCompany\\MyApp
默認為只讀,應該用於機器配置。 我建議你閱讀
正確的位置(我假設它的基礎是應該在多個用戶之間共享的db文件)是Per Machine“Documents”
用戶在用戶中創建/打開/關閉/保存的“文檔”類型文件。 這些通常是模板或公共文檔。
示例:MyTemplate.dot
Windows 7:C:\\ Users \\ Public
Vista:%SystemDrive%\\ Users \\ Public
XP:%ALLUSERSPROFILE%\\ Documents
環境變量:
Vista / Win7:%PUBLIC% 注意:XP上不存在
已知文件夾ID:FOLDERID_PublicDocuments
System.Environment.SpecialFolder:System.Environment.SpecialFolder.CommonDocuments
CSIDL:CSIDL_COMMON_DOCUMENTS
為什么不簡單地使用%APPDATA%?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.