2016-08-09 5 views
0

C#でデスクトップアプリケーションを開発し、Inno setupコンパイラを使用してセットアップを作成しています。HKLMでHKEY_LOCAL_MACHINEを使用してレジストリキーを作成する方法

(すなわち、アプリケーションが管理/非管理PCにインストールすることができます)私はInno Setupのは全てのユーザを使用してアプリケーションの設定を作成している

  1. 、私はアプリケーションの機能を説明しましょう。

    //all user 
    PrivilegesRequired=lowest 
    
  2. アプリケーションをインストールしている間、私はHKLMにレジストリキーを作成します。このために私は、インストールするアプリケーションのレジストリキーが作成されていないが、その例外

    --------------------------- 
    Error 
    --------------------------- 
    Error creating registry key: 
    
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TestKey 
    
    RegCreateKeyEx failed; code 5. 
    
    Access is denied. 
    
    Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation. 
    

下に投げ

  • [Registry] 
    Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\TestKey"; Permissions: users-modify; \ 
        Flags: uninsdeletekey createvalueifdoesntexist; ValueType: string; \ 
        ValueName: "SOAPAddress"; ValueData: "ABC" 
    

    以下、私を助けてどのように作成することができますようInno Setupのスクリプトでレジストリキーを追加しましたInno Setupコンパイラを使用して HKLMのレジストリキーを入力します。

    私はVS2010でレジストリキーを作成しましたが、管理者以外のPCはセットアップできませんでした。

    ありがとうございます!

    答えて

    3

    HKLMに書き込むには管理者特権が必要です。したがって、PrivilegesRequired=lowestは使用できません。

    HKLMにユーザー書き込み可能なキーを作成することは悪いことです。


    それはあなたが「管理/非管理PCにインストールできるアプリケーション」によって何を意味するのか、本当に明確ではないですが、多分あなたは、実際にこのを探しています:
    Make Inno Setup installer request privileges elevation only when needed

    +0

    ありがとうございました。私はすべてのユーザ(管理者権限のユーザと通常のユーザシステム)にインストールできるアプリケーション設定を作成したいと思っています。また、HKLMにレジストリキーを書くこともできます –

    +1

    わかりました。しかし、もう一度、 'HKLM'に書き込むには管理者特権が必要です。その回避策はありません。したがって、管理者以外のユーザが実行でき、 'HKLM'に書き込めるインストーラを持つことはできません。これはWindowsセキュリティの基本原則です。 –

    +0

    迅速な対応をありがとう。私はそれに応じて変更されます。 –

    関連する問題