Windows 7 从internet explorer安装时的UAC提示

Windows 7 从internet explorer安装时的UAC提示,windows-7,installshield,uac,one-click-web-publishing,Windows 7,Installshield,Uac,One Click Web Publishing,Hi已创建一个安装程序,在用户级别安装应用程序。 当我从cab文件中提取setup.exe并在本地运行时,它不会提示我使用UAC,并且会正常安装并在用户上下文中安装 应用程序和cab是数字签名的 但是,当我使用一键式安装程序安装相同的程序时,它会提示我输入UAC并在管理上下文中安装它 有人能解释一下为什么相同的setup.exe表现不同吗 我能做些什么来避免这种情况 我希望我的应用程序安装在用户级别,而不具有管理员权限?我猜setup.exe正在触发。从MSDN: 当检测到需要提升权限的应用程序

Hi已创建一个安装程序,在用户级别安装应用程序。 当我从cab文件中提取setup.exe并在本地运行时,它不会提示我使用UAC,并且会正常安装并在用户上下文中安装

应用程序和cab是数字签名的

但是,当我使用一键式安装程序安装相同的程序时,它会提示我输入UAC并在管理上下文中安装它

有人能解释一下为什么相同的setup.exe表现不同吗

我能做些什么来避免这种情况


我希望我的应用程序安装在用户级别,而不具有管理员权限?

我猜
setup.exe
正在触发。从MSDN:

当检测到需要提升权限的应用程序安装包时,系统将提示用户输入管理用户名和密码。如果用户输入有效凭据,操作将以适用的权限继续

Windows尝试检测某些安装程序(例如文件名中包含setup、install、update的应用程序),并尝试自动提升这些应用程序。Microsoft将此作为兼容性攻击:

  • 大多数用户不会意识到他们应该右键单击安装应用程序并选择“以管理员身份运行”
  • 更少的开发人员正确地将其安装程序标记为requireAdministrator
  • 使用MSI的开发人员更少,因为MSI知道如何/何时/是否提升为管理员
您可以通知Windows您的应用程序不应以管理员身份运行。您可以通过将
asInvoker
选项添加到可执行文件的程序集清单来完成此操作:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity 
            version="1.0.0.0"
            processorArchitecture="X86"
            name="client"
            type="win32"
    /> 

    <description>CodeJunkie Widget Installer</description> 

    <!-- Disable Setup elevation compatibility heuristics since we're named setup.exe -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
            </requestedPrivileges>
        </security>
    </trustInfo>
</assembly>

CodeJunkie小部件安装程序