如何使用Inno Setup在HKLM中创建注册表项,而无需管理员权限

Kis*_*r T 0 inno-setup

我正在使用C#开发桌面应用程序并使用Inno setup编译器创建设置.

让我解释一下应用功能,

  1. 我使用Inno Setup创建了应用程序安装程序所有用户(即应用程序可以安装在admin/non admin PC中).

    //all user
    PrivilegesRequired=lowest
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装应用程序时,我想在中创建注册表项HKLM.为此,我在Inno Setup脚本中添加了注册表项,如下所示

    [Registry]
    Root: HKLM; Subkey: "SOFTWARE\Wow6432Node\TestKey"; Permissions: users-modify; \
        Flags: uninsdeletekey createvalueifdoesntexist; ValueType: string; \
        ValueName: "SOAPAddress"; ValueData: "ABC"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安装应用程序注册表项时未创建其抛出异常

    ---------------------------
    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.
    
    Run Code Online (Sandbox Code Playgroud)

请帮帮我,如何HKLM使用Inno Setup编译器创建注册表项.

我已经在VS2010中检查了它的创建注册表项,但是安装程序无法运行非管理员PC.

提前致谢!

Mar*_*ryl 5

您需要具有管理员权限才能写入HKLM.所以你不能使用PrivilegesRequired=lowest.

并且创建用户可写入的密钥HKLM是一种不好的做法.


"应用程序可以在Admin /非管理员PC中安装"并不是很清楚你的意思,但也许你实际上是在寻找:
只在需要时才能使Inno Setup安装程序请求权限提升.