如何防止标准Windows 10用户的卸载程序升级?

时间:2016-02-17 23:08:04

标签: windows uninstall uac elevated-privileges

我们有一个x86 Win32桌面应用程序。当标准(非管理员)用户运行安装程序时,我们会避免提升和/或显示UAC提示并安装在C:\Users\username\AppData\Roaming\...而不是公共Program Files目录下。

在Windows 10上,当我们从Control Panel -> Programs -> Programs and Features启动卸载程序时,不会显示UAC提示符,并且卸载程序会在不提升的情况下运行。这是期望的行为。从Start -> Settings -> System -> Apps & features启动相同的卸载程序时,会显示UAC提示符。

(在Opera浏览器安装程序/卸载程序中可以看到相同的行为。我测试了v35.0.2066.37。)

为什么从Apps & featuresPrograms and Features启动时,同一个卸载程序的行为会有所不同?

如何从Apps& amp;特征

我们卸载程序的清单包括:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
   <security>
      <requestedPrivileges>
         <requestedExecutionLevel level="asInvoker" />
      </requestedPrivileges>
   </security>
</trustInfo>

我尝试更改requestedExecutionLevel,并尝试完全删除trustInfo,但无论如何都没有改变行为。

在Windows 10 1511版本10586.104上进行了测试。

修改:为了澄清,我尝试处理的情况是用户拥有标准帐户但不知道管理员帐户的密码。如果他们在尝试卸载时看到UAC提示,他们别无选择,只能取消它,并且我们的卸载程序无法运行。

1 个答案:

答案 0 :(得分:3)

这是&#34; Apps&amp;特征&#34;我所知道的。 WiX的人有closed this issue作为Windows错误,我认为他们已经通知了正确的人@ Microsoft。在Insider build 15042中,行为仍然相同,因此可能无法及时修复Creators Update。

如果标准用户无法提升,则无法使用解决方法。

如果他们可以提升,那么您可以使用评论中发布的re-spawn workaround或手动加载用户个人资料并致电RegOverridePredefKey,但他们都是丑陋的黑客(恕我直言)。