代码之家  ›  专栏  ›  技术社区  ›  Nifle Hassan Syed

应用程序要求提升权限才能在win7上运行,但不能在vista上运行

  •  1
  • Nifle Hassan Syed  · 技术社区  · 14 年前

    在我安装之后,桌面上的程序图标会得到一个屏蔽,通知用户应用程序需要提升的权限。我以为是安装程序出了点问题,就改成使用NSIS,同样的问题。

    有人知道为什么在这台计算机上而不是在xp-32、win7-64位或Vista 64位上会这样做吗?

    4 回复  |  直到 14 年前
        1
  •  1
  •   saschabeaumont    14 年前

    这很可能与“程序兼容性助手”认为您的应用程序不兼容(因为您没有指定它是不兼容的)和“猜测”它需要提升有关。

    尝试添加正确的 Application Manifest 以指示不需要提升,并且Vista和Windows 7都是受支持的操作系统。。。下面是一个例子:

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
             <requestedExecutionLevel level="asInvoker" uiAccess="False">
             </requestedExecutionLevel>
           </requestedPrivileges>
        </security>
      </trustInfo>
      <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
         <application>
            <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
            <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
         </application>
      </compatibility>
    </assembly>
    
        2
  •  1
  •   Milo Casagrande    14 年前

    在通过NSIS安装程序安装的Windows 7机器上,我遇到了与您相同的问题:应用程序在启动程序和桌面快捷方式上有一个“shield”图标。

    我们解决了在创建安装程序的NSIS脚本中添加这一简单行的问题:

    RequestExecutionLevel user
    

    http://nsis.sourceforge.net/Docs/Chapter4.html

    希望这能帮助你解决问题。

        3
  •  0
  •   William Leara    14 年前

    我至少可以回答你的一个问题:

    在XP上看不到盾牌图标,因为在WinXP中没有提升的概念。WinXP不支持 UAC 这是Vista首次引入的。

    然而,Vista32/64和Win7-32/64都支持UAC,所以我无法想象为什么只有Win7-32会有不同的行为。你在测试的其他操作系统中修改了UAC设置了吗?

        4
  •  0
  •   Anders    14 年前

    这可能与安装程序无关,但与快捷方式的目标(您的应用程序?)

    我猜你的申请表上没有清单。如果要删除覆盖,请尝试使用requestedExecutionLevel asInvoker添加一个清单(但这不会关闭该应用程序的虚拟化和其他兼容性)