如何创建一个完全信任的UWP应用程序?

6
通过桌面桥(前身为Centennial项目)使用DAC,您可以创建一个完全信任的UWP应用程序。我认为这意味着现在您可以创建一个完全信任的UWP应用程序,如果是这样,您该如何操作呢?
我试图找出的是,我需要在我的UWP项目上手动设置什么配置来授予它完全信任。
如果您需要一些背景,我需要创建一个企业工具,必须是UWP。该应用程序将在我们公司运行,其中一个使UX更好的功能是能够访问UWP允许之外的文件系统的某些部分,最好不要召唤对话框。能够运行其他DLL也会带来极大的优势;或许这次需要DLL Hell。
2个回答

16

@Anzurio - 刚刚看到你的问题,想分享我们构建新Windows Terminal的经验。

我们最初试图创建一个UWP应用程序,具有漂亮的现代XAML UI,但很快发现UWP应用程序平台无法支持我们的一些关键要求: 1. 终端必须能够以提升的方式启动 2. 终端必须能够启动并连接到任意可执行文件(例如cmd、powershell、wsl等)

由于这些限制,我们不得不将终端创建为标准Win32进程,其中包含一个XAML Island,该岛在主窗口框架中托管终端的选项卡栏和终端XAML控件实例。

我们已经尽可能地将应用程序生命周期/逻辑代码从Win32主机中移出,这样如果/当应用程序平台支持我们的要求并且我们可以发布真正的UWP终端应用程序时,我们就会少做更少的工作。

我们正在与应用程序平台团队合作,以找出如何在未来更清洁地构建/全信任现代应用程序。

与此同时,我希望这个回答有所帮助,并希望终端源代码能给你一些灵感,以便如何打造你自己的应用程序。


4

我不知道有这样的选项。是的,DAC可以包含完全受信任的Win32应用程序,但仅适用于Win32。UWP-WinRT应用程序受到应用程序容器的限制。

替代选项是使用"特殊功能"。

特殊和受限功能

有许多声明可以克服沙箱的限制。其中一些不适用于商店提交 - 仅适用于内部部署应用程序。其他需要注册才能由Microsoft与商店一起部署。如果您的需求匹配,可以使用它。

(添加 - 2017年6月) 从Win10 AU开始,我们可以使用"FullTrustLauncher" API从UWP应用程序启动Win32组件。但是,是的,并不意味着我们可以以完全信任的权限运行"UWP" - WinRT进程。它仅适用于Win32进程。Win32应用程序可执行文件应包含在应用程序的AppX包中,并且清单应将可执行文件声明为"windows.fullTrustProcess"。

  <Extensions> 
    <desktop:Extension Category="windows.fullTrustProcess" Executable="fulltrustprocess.exe"> 
      <desktop:FullTrustProcess> 
        <desktop:ParameterGroup GroupId="SyncGroup" Parameters="/Sync"/> 
        <desktop:ParameterGroup GroupId="OtherGroup" Parameters="/Other"/> 
      </desktop:FullTrustProcess> 
    </desktop:Extension> 
  </Extensions> 

Full​Trust​Process​Launcher Class


1
我一直在研究这条路,但 <rescap> 似乎只能在我想要使用 <desktop:Extension Category="windows.fullTrustProcess" Executable="Win32Process_CPP.exe" /> 来调用完整的进程时才起作用。 - Anzurio
UWP应用程序也可以是完全信任的应用程序。这句话摘自《Windows Internals第7版》第3章-进程和作业。 “创建完全信任的现代应用程序的选项未公开,保留给具有现代外观但执行系统级操作的应用程序。一个典型的例子是Windows 10中的设置应用程序(SystemSettings.exe)。 ”因此,UWP应用程序也可以是现代应用程序,只是微软不向所有应用程序公开此功能。 - Sahil Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接