1

ProgramDataにプログラムをインストールしています。UAB 2.1を使用してアプリを更新していますが、パスへのアクセスが拒否されたため失敗しました(テキストファイルでOKなので、UACに問題があると思います)。ProgramData / MyAppFolderで上書き権限を取得する方法、またはユーザーがアップデーターの上書き権限を付与していることを通知するダイアログを表示するにはどうすればよいですか。

よろしくお願いします。

アップデート

http://blogs.msdn.com/b/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspxで記事を読みました。ディレクトリを作成し、インストール時に必要なACLを設定する必要があるとのことです。インストールフォルダをLocalAppDataに変更するか、記事に従ってインストール時にACLを設定しようとする必要があります。

4

1 に答える 1

1

自分自身を更新するアプリは、UACでは苦労します。最善の策は、更新を行うコードを別のexeに分割することです。そのexeにrequireAdministratorを含むマニフェストを配置します。メインアプリで、更新をチェックするコードを残し、更新が必要なときにボタンまたはメニュー項目を有効にします。そのボタンまたはメニュー項目にシールドを配置し、ShellExecuteを使用して別のexeを起動させます。ユーザーにはUAC同意ダイアログが表示されますが、これはシールドのために期待されます。別のexeは昇格されているため、プログラムファイルやその他の保護された領域に書き込むことができます。

于 2010-07-30T12:09:29.503 に答える