私は数年前からうまく機能していた既存のWindowsデスクトップアプリケーションの新しいバージョンを作成しています。アプリケーションは、SqlServerCeデータベースを使用します。このデータベースは、コンピュータのDataDirectoryにインストールされます。新しいバージョンのアプリケーションは、64ビットマシンと互換性があるように作成されています。 MacBookでWindows 10を実行しているParallels VMにコードを移行し、Visual Studio 2017を使用して新しいバージョンをビルドしています。ビルドはうまく動作します(インストールファイルを作成するためにセットアップウィザードプロジェクトを使用しています)。しかし、アプリケーションをインストールすると、データベースへの最初のアクセス時にエラーが発生します。64ビットWindowsマシンのビルドを作成するときに「データベースファイルへのアクセスが許可されていません」というエラーが表示される
エラーは次のとおりです。 データベースファイルへのアクセスは許可されていません。 [1884、ファイル名= C:\ ProgramData \ CompanyName \ ApplicationName \ AppDataBase.sdf、SeCreateFile]。
.sdfは読み取り専用としてマークされていません。 .sdfファイルに移動して、それがインストールされ、(ファイルエクスプローラを使用して)Everyoneに読み取り、書き込み、変更の権限を与えると、アプリケーションはファイルにアクセスでき、エラーは発生しません。しかし、File.SetAccessControlを使用してコード内からこれを実行しようとすると、アクセスエラーが再び発生します。セットアップウィザードの機能(ファイルシステムビュー)を使用して、インストールプロセス中に.sdfファイルのアクセス許可を設定する方法はありません。 Visual Studio 2010を使用して構築し、x86マシン上で展開するとき
<connectionStrings>
<add name="ApplicationName.Properties.Settings.ApplicationNameConnectionString"
connectionString="Data Source=|DataDirectory|AppDataBase.sdf"
providerName="Microsoft.SqlServerCe.Client.4.0" />
</connectionStrings>
これはうまく働いた:ここ
は、私が使用しています接続文字列です。アドバイスをいただきありがとうございます。
ありがとうございます!これは私が探していたものです!私はProgramDataの場所を操作するコード内の何かを削除し、アプリケーションを公開する方法として従来のDeploymentプロジェクトを削除しました。次に、(すべての設定を確認した後で)プロジェクトの公開機能を使用しました。どうもありがとう。私はフォルダの場所の変更について私に知らせるものは見ていなかったので、私は長い間それを苦労していたでしょう。 – rogdawg