我正在创建一个已运行良好多年的现有Windows桌面应用程序的新版本。该应用程序使用SqlServerCe数据库,该数据库安装在机器的DataDirectory中。正在创建新版本的应用程序以与64位机器兼容。我已将代码迁移到在Macbook上运行Windows 10的Parallels VM,并使用Visual Studio 2017构建新版本。构建工作正常(我正在使用安装向导项目创建安装文件)。但是,当我安装应用程序时,第一次访问数据库时出现错误。为64位Windows机器创建构建时出现“访问数据库文件不被允许”错误
错误提示: 不允许访问数据库文件。 [1884,文件名= C:\ ProgramData \ CompanyName \ ApplicationName \ AppDataBase.sdf,SeCreateFile]。
.sdf未标记为只读。如果我转到.sdf文件,一旦安装它,并向每个人(使用文件资源管理器)授予读取,写入和修改权限,那么应用程序可以访问该文件并且没有错误。但是,如果我尝试从我的代码中使用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机器上进行部署时工作得很好。提前感谢您提供的任何建议。
非常感谢!这就是我一直在寻找的!我删除了处理ProgramData位置的代码中的任何内容,并删除了旧版的Deployment项目作为发布应用程序的方式。然后,我使用项目的发布功能(在检查完所有设置后),并且它工作正常!非常感谢。我没有看到任何让我知道文件夹位置发生变化的事情,所以我很久以来就一直在努力。 – rogdawg