应用程序要求提升的privs在win7上运行但不是vista

时间:2010-05-06 12:35:39

标签: c# .net installer nsis inno-setup

我有一个简单的应用程序,我刚刚在win7(32位)上尝试了安装程序(Innosetup)。

安装完成后,桌面上的程序图标会在其上显示屏蔽,通知用户应用程序需要提升权限。我认为安装程序有问题,而且使用NSIS代替同样的问题。

有谁知道为什么它会在这台电脑上运行,而不是在xp-32,win7-64位或Vista 64位上?

如果我允许应用程序运行(对系统提示符为“是”),则只会出现错误“遇到错误.Windows正在寻找解决方案”然后关闭。

4 个答案:

答案 0 :(得分:1)

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

尝试添加正确的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>

答案 1 :(得分:1)

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

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

RequestExecutionLevel user

http://nsis.sourceforge.net/Docs/Chapter4.html(搜索UAC)

希望这可能有助于解决您的问题。

答案 2 :(得分:0)

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

你不会在XP上看到盾牌图标,因为WinXP中没有高程概念。 WinXP不支持Vista中首次引入的UAC

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

答案 3 :(得分:0)

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

如果Windows认为快捷方式指向需要提升的程序,则会显示屏蔽覆盖图标。如果目标有一个请求执行级别为requireAdministrator的清单(如果您是管理员,则为highestAvailable),或者目标没有“Vista”清单且Windows检测到这是补丁/安装/安装应用程序或应用程序时,它将显示它兼容性问题。

我猜你的应用程序没有清单。如果要删除叠加层,请尝试添加带有requestedExecutionLevel asInvoker的清单(并不是说这会关闭该应用程序的虚拟化和其他兼容性内容)