0

Windows フォーム プロジェクトがあり、セットアップ ウィザード プロジェクトを作成して、ユーザーが次の次の方法でインストールできるようにしました。

このプロジェクトは Microsoft Access をデータベースとして使用しており、データベース ファイルを SetupWizard に適切に追加したところ、すべて問題ありませんでした。

ただし、再インストール後、Windows がデータベース ファイルを「アプリケーション フォルダ」から C:\users\myUser\AppData\Local\VirtualStore\Program Files (x86)\ にコピーしていることに気付きました。

参考までに、app.config の接続文字列:

<connectionStrings>
    <add name="<ProjectName>.Properties.Settings.databaseConnectionString"
     connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\database.mdb;Persist Security Info=True;Jet OLEDB:Database Password=MyPassword"
providerName="System.Data.OleDb" />
</connectionStrings>

ProjectOutput と database.mdb から .exe を同じフォルダーに収集するだけで、完全に機能します。

インストールを行うと、データベースファイルが C:\users\myUser\AppData\Local\VirtualStore\Program Files (x86)\ フォルダーにコピーされます。これは、ユーザーが好きな場所にインストールしてファイルがそこだけにとどまります。(これはソフトウェア要件です)。

「現在のユーザー」と「すべてのユーザー」へのインストールも試みましたが、動作は同じです。

4

1 に答える 1

0

UAC システムでフォルダーのリダイレクトを発見しました。これは、一部の OS バージョンで制限されたフォルダーに書き込むときに発生することです。

http://blogs.windows.com/windows/archive/b/developers/archive/2009/08/04/user-account-control-data-redirection.aspx

ユーザーに管理者への昇格を求めるには、コードに昇格マニフェストが必要です。これは役立つかもしれません:

http://www.codeproject.com/Articles/17968/Making-Your-Application-UAC-Aware

また、要求された実行レベルの管理者が必要です。

制限されたユーザーがアプリを使用できるようにする場合は、アプリを再設計して、管理者特権を必要とするものに書き込みを行わないようにします。それが User's Application Data のようなフォルダーの目的です。

于 2014-04-29T16:04:02.703 に答える