【问题标题】:WIX: How to distinguish between members of the Administrators group and built-in AdministratorsWIX:如何区分管理员组的成员和内置管理员
【发布时间】:2011-08-05 00:07:38
【问题描述】:

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

安装程序在 XP 和 Vista 上运行正常,但在 Windows 7 上无法检测到管理员用户。

我将 MSIUSEREALADMINDETECTION 设置为 1 以确保仅为管理员用户设置 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组的成员?

【问题讨论】:

  • “在 Vista 上没有失败,但在 Vista 上失败了”——嗯??

标签: windows-7 windows-vista wix windows-installer


【解决方案1】:

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

【讨论】:

  • 这是真的。在 Vista 和 Windows 7 上,任何人都可以通过提升获得管理员权限。解决方案是使用 Windows API 确定用户帐户类型的自定义操作。
  • @Cosmin 你知道哪个 API 吗?
  • 您可以尝试使用这种方法:support.microsoft.com/kb/q118626 或 NetUserGetInfo() 函数:msdn.microsoft.com/en-us/library/aa370654%28VS.85%29.aspx 与 USER_INFO_1 结构。
  • @Cosmin 我得到了 UAC 部分,但我仍然不知道如何确定用户帐户类型。我的要求是在 ProgramFiles 中为管理员安装应用程序,并为非管理员用户安装到用户目录中。你可以说 XP 行为。
【解决方案2】:

不用担心设置MSIUSEREALADMINDETECTION,这是针对AdminUser 属性的。

我使用以下代码:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多