13

私は「自動アップグレード」メカニズムを持っていますが、これはWindows XPで長年機能しており、Windows 7では失敗します。これは、ユーザー(Windows XPでは存在しなかった)に管理者権限で実行する権限を付与するよう求めるプロンプトが表示されるためです。表示されません。

win32プログラム(Borland Delphiで記述)は、LogonUser()およびImpersonateLoggedOnUser()を使用して、ユーザー(管理者権限を持つローカルアカウント)になりすまし、ProgramFilesフォルダー内の選択したファイルを置き換えることができます。

このユーザーアカウントを使用してWindows7に手動でログオンし、プログラムファイルフォルダー内のファイルを削除しようとすると、Windows 7は、プログラムの続行を許可する許可を求めます。許可を与えると、ファイルは削除されます。許可を拒否すると、 「アクセス拒否」が報告され、削除は許可されません。

上記と同じことを試みると、「アクセスが拒否されました」は、ユーザーにプロンプ​​トが表示されない結果になります。

私は同様の質問で(一時ファイルの作成に関して(与えられた答えの主な目的は非常に正しく「しないでください」)、そのようなプロンプトを「コードで」発生させることができることを確認しましたが、どこにあるのかわかりませんその方法は実際に説明されています。

4

3 に答える 3

5

アプリケーション マニフェストで、自動アップデーターに昇格した特権が必要であることをマークするだけです。

つまり、ユーザーが書き込み権限を持つ場所にインストールすることを検討することをお勧めします。

于 2011-05-25T22:39:25.037 に答える
3

昇格したコードを実行する方法を部分的に尋ねているようです。以下の質問に対する回答がいくつかあり、管理者特権で実行されている機能を呼び出すために必要な情報へのリンクが提供されています。

Delphi: 必要に応じて UAC の昇格を求める

于 2011-05-25T23:31:30.257 に答える
0

さて2年が経過し、私のクライアントはついにWindows 7を採用し、私は自分のインストーラーを次のように置き換えることで、解決しようとしていた問題(Windows 7のプログラムファイルの実行可能ファイルを置き換えるのに十分な権限を一時的に取得する)を回避することにようやく取り掛かりました。 Inno Setupインストーラー(Pascal Scriptingを使用してインストーラーから引き継がれた追加ロジックを組み込んでいます)。Inno Setは、すべての権限の問題を処理します-hurrah。

于 2013-03-11T11:44:28.970 に答える