1

数年前に Windows XP で Access DB を使用して開発された VB ベースの VS2005 アプリケーションがあり、Windows 7 に移行するまで問題なく動作していました。x64 プラットフォームに変更すると同時に Access DB を変更してソリューションを再構築しました。その結果、新しい Access DB ファイルがソリューションに含まれるようになります。VS2005 でデバッグすると、新しいバージョンの DB が project\x86\Release フォルダーにあり、この新しいバージョンに正常にアクセスできます。

問題は、展開用のソリューションを作成すると、展開されたアプリケーションが古いバージョンのアクセス データベース (mdb) ファイルを開き続けることです。インストールされたフォルダーから mdb を削除した後でも、古いバージョンの DB をどこから開いているのかを見つけることができませんでした。私はウェブで多くの掘り下げと調査を行ってきましたが、この問題を解決する方法を見つけることができませんでした.

デプロイした appl で新しいバージョンの DB を開く方法を教えてください。

前もって感謝します

4

1 に答える 1

0

仮想化を許可していないようですが、これについて知っていますか?XP(Vista以降)以降のセキュリティ上の理由から、MicrosoftはProgramsフォルダーへの書き込みを許可していません。これを実行しようとしているアプリケーションが検出された場合、書き込みを試行しているファイル(この場合はAccessデータベース)のコピーを作成して配置します。カジュアルユーザーから隠された場所(現時点では正確にどこを思い出せないか)。

たとえば、.exeファイルの同じ場所にあるWin 7マシンのデータベースを見ると、未使用であることがわかるはずです。このデータベースはマシンにインストールされているため、OSは読み取り/への要求をリダイレクトしています。データベースに作成した仮想化コピーに書き込みます。

したがって、まず、この他のコピーを見つけて(申し訳ありませんが、現在Macを使用していて、場所を思い出せません)、アプリケーションが作成しているデータが含まれているかどうかを確認してください。次に、新しいデータベースに置き換えて(もちろん、最初に古いデータベースのコピーを作成して)、アプリケーションがデータベースの読み取り/書き込みに問題がないかどうかを確認してください。

次に、アプリケーションのインストール中にデータベースの交換を処理する必要があります。

ただし、仮想化されていない場所にデータベースを配置することを真剣に検討する必要があります。

于 2013-03-10T16:06:11.933 に答える