3

類似: パスが保護されている場合、Windows Vista UAC の昇格を要求しますか?

c:\Program Files (Windows Vista) に .NET クライアント アプリケーションがインストールされています。このアプリケーションはそれ自体を更新する必要がありますが、権限の問題により更新されません。自動アップデーターはいくつかのアセンブリを単純に置き換える必要がありますが、それらはすべて c:\Program File の下にあり、アプリケーションは次の例外をスローします。

System.UnauthorizedAccessException: パス 'C:\Program Files...' へのアクセスが拒否されました。

アプリケーションをインストールできる場所と許可を制御することはできません。これに対する回避策はありますか? 管理者権限を数秒間要求することはできますか? UAC ウィンドウをポップすることは可能ですか? 回避策があると確信しています...そうでなければ、Firefoxはどのように自分自身を更新できますか?

助けとアイデアを前もってありがとう!

4

2 に答える 2

5

クリック ワンスの展開方法を使用できますか? これを内部アプリケーションに使用し、新しいバージョンを公開するとき、ユーザーはアクセス許可に問題はありません。アプリを起動すると (新しいバージョンが存在する場合)、更新プログラムをインストールするように求められ、問題なくインストールされます。

于 2009-02-08T00:46:45.987 に答える
3

途中でプロセスの権限を昇格させることはできませんが、より高い権限を持つ別の別のプロセスを開始して、作業を行うことができます。

メイン アプリケーションを取得して、すべてのファイル/インストールの詳細を、アクセス許可の低い一時的な場所に配置します。準備ができたら、それらのファイルを Program Files ディレクトリにコピーするだけの小さなアプリケーションを起動します (そして、新しい更新でメイン アプリケーションを再起動することもできます)。そのアプリケーションに、Program Files ディレクトリへのコピーまたはレジストリへの書き込み (またはその他の必要なもの) に必要なアクセス許可が必要であることをマークします。

于 2009-02-08T00:41:54.670 に答える