WIX:如何区分Administrators组和内置管理员的成员

问题描述 投票:1回答:2

对于管理员和普通用户(不同的安装目录等),我的安装应该有不同的行为。同时它应该适用于XP,Vista和Windows 7。

安装程序正如我对XP和Vista所期望的那样工作,但它无法在Windows 7上检测到管理员用户。

我将MSIUSEREALADMINDETECTION设置为1以确保仅为admin用户设置了Privileged。

<Property Id="MSIUSEREALADMINDETECTION" Value="1" />

作为管理员用户,以下条件在Vista上不会失败,但在Vista上失败

<Condition Message="Not Privileged">Privileged</Condition>

这是测试项目(我知道它不完整:)

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="0b241708-eb30-4bd9-9906-983f228ee2a6" Name="wixTest01" Language="1033" Version="1.0.0.0" Manufacturer="wixTest01" UpgradeCode="1093efb2-75d0-499a-8050-99adfc8ae7c2">
    <Package InstallerVersion="200" Compressed="yes" />

    <UI>
      <UIRef Id="WixUI_InstallDir" />
    </UI>

    <Property Id="MSIUSEREALADMINDETECTION" Value="1" />
    <Condition Message="Privileged">Privileged</Condition>

  </Product>
</Wix>

更新:

我刚刚发现了这个:

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Admin-check-in-Win-2008-td4557002.html

我在Vista上使用了内置管理员帐户,在Windows 7上使用了创建的管理员(Administrators组成员)。我认为这些帐户是相同的,但事实并非如此。

内置管理员将其Privileged属性设置为1,而Administrators组的成员则不设置。

似乎无法检测Administrators组的成员?

windows-7 windows-vista wix windows-installer
2个回答
3
投票

如您链接到的主题中所述,这是启用UAC时的标准行为。在UAC同意提示下,Administrators组的成员仅按需获得提升的权限;在其他时候,他们几乎是标准用户(或多或少)。


2
投票

不要担心设置MSIUSEREALADMINDETECTION,这是AdminUser属性。

我使用以下代码:

<Condition Message="Privileged">
    <![CDATA[Installed OR Privileged]]>
</Condition>

但是,由于Vista和Windows 7具有“过肩”身份验证(请参阅Using Windows Installer with UAC MSDN文档),因此用户在InstallUISequence期间没有提升权限,您将遇到问题。

例如,标准用户运行安装程序,只有当他们点击“安装”按钮(带有UAC屏蔽)时,系统才会提示他们输入管理凭据,因此您不知道管理员是否会在之前提供安装过程。

© www.soinside.com 2019 - 2024. All rights reserved.