7

インストール時にマイドキュメントディレクトリにファイルを作成する必要があるプログラムがあります。これは厳密な固定要件であり、これを変更することはありません。問題は、ユーザーがセットアップファイルで「管理者として実行」を実行した場合、innosetups定数{userdocs}が、元のログインユーザーではなく管理者のドキュメントディレクトリを指していることです。

だから、グーグルでこれを見つけた:

Windows Vista /7のInnoSetupを使用して、元のユーザーのMyDocsフォルダーにファイルをインストールします

ただし、innosetupには次のように記載されているため、答えは間違っています。

ユーザーがEXEファイルを右クリックして[管理者として実行]を選択してセットアップを起動した場合、セットアップには元のユーザー資格情報を使用してコードを実行する機会がないため、残念ながらこのフラグは効果がありません。セットアップがすでに昇格されたプロセスから起動された場合も同じです。ただし、これはInnoSetup固有の制限ではないことに注意してください。このような場合でも、Windowsインストーラーベースのインストーラーは元のユーザー資格情報に戻ることはできません。

Run As Administratorを使用しないようにユーザーに勧めることはできると思いますが、昇格しないようにする方法がわかりません。

プログラム自体に、(インストール後の)最初の実行時にMy Documents \Programnameディレクトリを設定してもらうことを考えていました。この回避策は機能しますか?潜在的に制限されたユーザーとして、プログラムファイルディレクトリからファイルをコピーする必要があります。それは可能ですか、それとも私は特権の問題に遭遇しますか?

4

3 に答える 3

6

元の回答は有効ですが、お勧めしません。セットアップが実行RunAsOriginalUserされると、現在 Windows にログインしているユーザーとして実行されます。これは、セットアップの一部を昇格せずに実行してから、昇格した別のコピーを実行して実際のインストールを行うことによって行われます。

ユーザーが明示的に「管理者として実行」を実行すると、「昇格されていないスタブ」も昇格されて実行されます。この場合、元のユーザーにアクセスするためにセットアップでできることは何もありません。その情報は既に置き換えられているためです。

受け入れられている方法は、あなたが提案したように、アプリケーション自体でプロファイル固有の作業を行うことです。これは、他のユーザーに対しても、Vista より前の LUA 環境でも機能することを意味します (あなたが見ているのとまったく同じ状況があったでしょう)今)。

于 2012-05-10T10:38:46.140 に答える
0

この記事では、標高を回避する方法についてのガイダンスを提供する場合があります。

http://www.codeproject.com/Articles/18946/High-elevation-can-be-bad-for-your-application-How

一般的に、インストールの最後に、昇格せずに実行可能ファイル([マイドキュメント]の下にファイルを作成する)を実行する機会が与えられます。

于 2012-05-10T05:32:44.227 に答える