Wix安装程序:在每个用户安装中写入HKLM/HKCR,但不具有提升的权限

Wix安装程序:在每个用户安装中写入HKLM/HKCR,但不具有提升的权限,wix,windows-installer,Wix,Windows Installer,我用wix工具集创建了一个“perMachine”安装程序。安装程序必须以管理员权限启动,因为它会将多个注册表项写入HKLM和HKCR 我想将安装程序更改为“perUser”安装。是否有可能这样做,并仍然写信给香港海事处和香港华润?注册表项必须存在才能注册shell图标覆盖处理程序 问候 编辑: 似乎没有一种方法可以作为非管理员用户写入HKLM。 但是有没有办法让wix安装程序为admin pw提供提示?如果是这样,我可以接受以下解决方案: 用户知道admin pw(或admin提供pw):已

我用wix工具集创建了一个“perMachine”安装程序。安装程序必须以管理员权限启动,因为它会将多个注册表项写入HKLM和HKCR

我想将安装程序更改为“perUser”安装。是否有可能这样做,并仍然写信给香港海事处和香港华润?注册表项必须存在才能注册shell图标覆盖处理程序

问候

编辑: 似乎没有一种方法可以作为非管理员用户写入HKLM。 但是有没有办法让wix安装程序为admin pw提供提示?如果是这样,我可以接受以下解决方案:

  • 用户知道admin pw(或admin提供pw):已安装图标覆盖组件
  • 用户未提供管理员密码:跳过图标覆盖组件
因此,我的问题是: 1.如何向用户提示管理员pw? 2.如何根据用户操作跳过/安装组件

EDIT2: 我尝试了以下多种组合:

InstallPrivileges=“提升” InstallScope=“perUser”

属性“ALLUSERS”设置为空字符串

属性“MSIUSEREALADMINDETECTION”设置为1

属性“MSInstallPerUser”设置为1

所述组件的条件:“特权/管理员用户”


到目前为止,一切都不起作用。这一切都归结于阅读不正确的情况。我在几台电脑上试用过一个管理员用户。为了让产品能够安装所有功能,我必须以管理员的身份通过上下文菜单明确启动安装程序。否则,将无法安装图标覆盖处理程序。

否,当为每用户配置时,每用户安装仅对每用户资源(如注册表和c:\users)具有写访问权限。这在Vista和更高版本中的效果是不需要仰角,因此不需要UAC。

指出OP似乎不完全理解的东西

每台机器和每用户与写入HKLM所需的权限无关。Windows Installer不会以任何方式违反安全规则。如果安装需要权限,但没有权限,则在这两种情况下都会失败。在WiX中,软件包InstallPrivileges告诉Windows是否升级以使安装工作。如果安装用户没有权限,则提升提示符将允许输入管理员凭据。因此,1的答案是,如果用户不是管理员,InstallPrivileges=highted应该允许输入管理员帐户。否则就是一个平坦的高地

您可以在包含受限注册表项的组件上尝试条件,也可以尝试特权条件,以便仅在提升安装时安装。我从来没有试过这个,但它应该有用

其他备选方案包括:

组策略将允许将设置推送到用户有限的计算机上。这在公司环境中很常见

我突然想到,shell图标覆盖功能可能会逐个用户提供。这是一个SWAG,我不知道所有需要的注册表项,但是你当然可以在香港大学注册你的COM类。如果您使用WiX HKMU密钥,则将为每台机器中的机器和每用户中的用户创建项目。这里举一个例子:

自Windows Installer 1.0以来,每用户安装一直存在。它们不是作为对Vista/UAC的回应而创建的。这个博客似乎暗示了这一点。但是,其他地方确认每个用户都可以追溯到XP——在UAC之前。我已经更正了我的答案。完全回答这个问题需要更多的深度。在较高的层次上,应该注意到每个用户的安装都是一个难题,大多数安装开发人员都应该避免。显然,每个用户的安装都遇到了一个难题。但是,这不是问题所在。问题是您是否可以在没有提升的情况下写入非用户资源(即每个用户而不是每台机器使用)。答案是否定的。嘿,谢谢你的回答,很抱歉回复太晚了!你是对的,我没有完全理解这个概念。我根据你的建议更新了我的答案。不幸的是,我无法让它工作。。。如果我通常使用管理员帐户启动安装程序,则特权/adminuser“标志”似乎未设置。如果将安装程序设置为“perMachine”,但仍将所有文件安装在用户特定目录(APPDATA)中以及HKLM中的注册表项,是否有可能绕过此问题?我还试图从HKLM读取一个值,但迄今为止,任何操作都不起作用。你让它起作用了吗?