我开发了一个使用 SQL Server Express 2005 数据库的 C# 4.0 桌面应用程序。我已经构建了一个安装和部署 (msi) 包,它将应用程序及其所有依赖项(包括 mdb 数据库文件)安装到 Program Files 目录下的工作文件夹中。
连接字符串是这样的:
Server=.\SQLExpress;AttachDbFilename=|DataDirectory|MyDB.mdf;Database=MyDB;integrated security=true;user instance=true;
第一次进行数据库调用时,数据库将连接到本地 SQL Server Express 实例。
安装程序在 XP 计算机上按预期工作,但是,在 Windows 7 计算机上进行测试时,第一次进行数据库调用时会引发异常,这表明对包含 mdb 文件的文件夹没有足够的权限。
在 Windows XP 和 Windows 7 之间,Windows 似乎已经锁定了 Program Files 子文件夹的权限。我可以通过设置安装目录的完全权限来解决这个问题,但这似乎是作弊。
所以我的问题是:我应该如何为这个应用程序配置设置和部署包?我做对了吗?我是否只需要向应用程序目录上的所有用户授予完全权限?如果是这样,我如何使用 VS2010 设置和部署包来实现这一点?或者我应该把 mdb 文件放在别的地方吗?还是我完全以错误的方式做事?