SQL Server Express 2005データベースを使用するC#4.0デスクトップアプリケーションを開発しました。アプリケーションとそのすべての依存関係(mdbデータベースファイルを含む)をProgramFilesディレクトリの下の作業フォルダーにインストールするSetupand Deployment(msi)パッケージを作成しました。
接続文字列は次のようになります。
Server=.\SQLExpress;AttachDbFilename=|DataDirectory|MyDB.mdf;Database=MyDB;integrated security=true;user instance=true;
初めてデータベース呼び出しが行われると、データベースはローカルSQLServerExpressインスタンスに接続されます。
インストーラーはXPコンピューターで期待どおりに機能しますが、Windows 7マシンでテストすると、データベース呼び出しが最初に行われたときに例外がスローされ、mdbファイルを含むフォルダーに対するアクセス許可が不十分であることが示されます。
WindowsXPとWindows7の間で、Windowsはプログラムファイルサブフォルダーのアクセス許可をロックダウンしているようです。インストールディレクトリに完全なアクセス許可を設定することで問題を解決できますが、それはごまかしのようです。
だから私の質問はこれです:このアプリケーションのセットアップと展開パッケージをどのように構成する必要がありますか?私はそれを正しくやっていますか?アプリケーションディレクトリのすべてのユーザーに完全なアクセス許可を付与する必要がありますか?もしそうなら、VS2010のセットアップと展開パッケージでこれをどのように達成しますか?または、mdbファイルを別の場所に配置する必要がありますか?それとも私は完全に間違った方法で物事を進めていますか?