インストール時にマイドキュメントディレクトリにファイルを作成する必要があるプログラムがあります。これは厳密な固定要件であり、これを変更することはありません。問題は、ユーザーがセットアップファイルで「管理者として実行」を実行した場合、innosetups定数{userdocs}が、元のログインユーザーではなく管理者のドキュメントディレクトリを指していることです。
だから、グーグルでこれを見つけた:
Windows Vista /7のInnoSetupを使用して、元のユーザーのMyDocsフォルダーにファイルをインストールします
ただし、innosetupには次のように記載されているため、答えは間違っています。
ユーザーがEXEファイルを右クリックして[管理者として実行]を選択してセットアップを起動した場合、セットアップには元のユーザー資格情報を使用してコードを実行する機会がないため、残念ながらこのフラグは効果がありません。セットアップがすでに昇格されたプロセスから起動された場合も同じです。ただし、これはInnoSetup固有の制限ではないことに注意してください。このような場合でも、Windowsインストーラーベースのインストーラーは元のユーザー資格情報に戻ることはできません。
Run As Administratorを使用しないようにユーザーに勧めることはできると思いますが、昇格しないようにする方法がわかりません。
プログラム自体に、(インストール後の)最初の実行時にMy Documents \Programnameディレクトリを設定してもらうことを考えていました。この回避策は機能しますか?潜在的に制限されたユーザーとして、プログラムファイルディレクトリからファイルをコピーする必要があります。それは可能ですか、それとも私は特権の問題に遭遇しますか?