我正在构建ActiveX控件的安装。当我尝试在本地的web-webbed标记网页(在此VM上的IE8中)中使用已部署的控件时,它尝试访问SQL CE数据库,但在Open()调用期间失败并出现上述错误。似乎缺少权限通常是导致此错误的原因,但是为sdf文件(和目录)授予Everyone完全控制权没有任何区别。连接代码由与其一起部署的独立应用程序共享,无需访问数据库。
以管理员身份运行IE确实有效,但我不想要求最终用户。发生了什么事?
更多信息:根据procmon,iexplore.exe正在为sdf文件调用CreateFile(),请求使用ShareMode Read,Write,以及我作为用户进行通用读/写访问,并因此获得ACCESS DENIED。错误文本是
Access to the database file is not allowed. [ File name = c:\mydir\mydb.sdf ]
at System.Data.SqlServerCe.SqlCeConnection.ProcessResults(Int32 hr)
at System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent)
at System.Data.SqlServerCe.SqlCeConnection.Open()
更新:以上是使用CE 3.5 SP2(DLL是.NET 4)。怀疑问题已降至3.5不支持部分信任方案,我升级到CE 4 SP1,据称这样做。但行为没有变化。有什么想法吗?