从签名的MSIX安装的签名的WPF应用仍在不受信任的位置运行

问题描述

我有一个有效的代码签名证书。我用它来签署WPF应用程序。该应用将以管理员身份运行。它具有有效的app.manifest。

  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  </requestedPrivileges>

MSIX文件是使用MSIX打包工具构建的。我使用相同的证书签署了MSIX应用程序包。 appx清单具有这些功能

<Capabilities>
    <Capability Name="internetClient" />
    <rescap:Capability Name="runFullTrust" />
    <rescap:Capability Name="allowElevation" />
</Capabilities>

我在运行版本1903的Windows 10 Pro计算机上安装了MSIX文件。它正确安装,并指示它是受信任的应用程序。启动应用程序时,我看到黄色警告,“此文​​件正在不受信任的位置运行”。我希望看到蓝色的UAC海拔警告,因为该应用程序已签名。

我解压缩了MSIX文件,并验证了EXE是否已使用代码签名证书签名。它是。我启动了EXE文件,看到带有证书中公司名称的正确的蓝色UAC提升警告。

为什么Windows 10认为WPF应用程序是从不受信任的来源启动的?

解决方法

首先,如果要从头开始开发应用程序,则应使用Visual Studio的Windows应用程序打包项目来生成程序包。 MSIX打包工具仅用于转换为您没有源代码的MSIX应用。

MSFT的Stefan Wick在thiw工作,他就该主题写了一些非常有用的教程: https://stefanwick.com/tag/allowelevation/

在Twitter上向我发送消息(如果他尚未注意到您的问题),他可能会有更多详细信息。

我怀疑您收到此警告是因为该应用程序是侧载的(即未从MS Store安装),并且它也在使用allowElevation。

仅用于测试。您可以使用相同的证书从软件包中删除allowElevation功能并重新安装吗? (您可能需要以和管理员手动启动它,否则它将无提示地崩溃)。