2016-09-14 7 views
1

私のアプリケーションはJavaで作成されており、Windowsで実行するには管理者権限が必要です。 Inno Setupを使う私は次のコードでレジストリを変更することができ、Windows 7の場合はうまく動作しますが、Windows 10と8の場合はレジストリがもう存在しないため、同じ成功はありません。Inno Setupの "RUNASADMIN"アプリケーション互換性フラグを設定する

[Registry] 
Root: HKCR; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletekeyifempty uninsdeletevalue; 
Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; Flags: uninsdeletekeyifempty uninsdeletevalue; 

私はそれが実行可能なマニフェストで行うことができます読んで、私はそれは私のシナリオではないのVisual Studioによって作られたアプリケーションのためであると仮定します。それをJavaのマニフェストに入れる方法はありますか?

別のレジストリがある場合や、インストール中に別の種類のスクリプトをアタッチして実行する必要がある場合は、別の方法でこれを行うことができるかどうかを知りたいと思います。

答えて

2

あなたの問題はWindows 7とWindows 8/10とは関係がありません。むしろあなたのWindows 7は32ビットで、Windows 8/10は64ビットです。

Innoセットアップインストーラは32ビットアプリケーションですので、SOFTWAREはデフォルトでSOFTWARE\Wow6432Nodeにリダイレクトされます。

明示的にリダイレクトを避けるには、明示的な64ビットレジストリルートRoot: HKLM64を使用する必要があります。

さらに、Check: IsWin64を追加して、エラーが発生する可能性があるため、32ビットインストールでエントリが処理されないようにすることもできます。

[Registry] section documentationを参照してください。

またはuse 64-bit install modeです。


私もそれがHKCRすべきではないと信じていますが、HKCU


[Registry] 
; keys for 32-bit systems 
Root: HKCU32; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \ 
    ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; \ 
    Flags: uninsdeletekeyifempty uninsdeletevalue; Check: not IsWin64 
Root: HKLM32; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \ 
    ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; \ 
    Flags: uninsdeletekeyifempty uninsdeletevalue; Check: not IsWin64 

; keys for 64-bit systems 
Root: HKCU64; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \ 
    ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; \ 
    Flags: uninsdeletekeyifempty uninsdeletevalue; Check: IsWin64 
Root: HKLM64; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; \ 
    ValueType: String; ValueName: "{app}\AppExecutable.exe"; ValueData: "RUNASADMIN"; \ 
    Flags: uninsdeletekeyifempty uninsdeletevalue; Check: IsWin64 
関連する問題