【问题标题】:UWP limitations in desktop apps桌面应用中的 UWP 限制
【发布时间】:2016-03-29 14:09:10
【问题描述】:

我知道新的 UWP 应用模型与“传统”Win32 应用相比存在一些限制。

让我们以 Visual Studio Code 作为桌面应用的示例。

如果是 UWP 应用,Visual Studio Code 的哪些功能缺失或必须与用户不同?

编辑: 我已经完成了微软认证“使用 C# 开发 Windows 商店应用程序的基本要素”和考试 70-355:通用 Windows 平台 - 应用程序数据、服务和编码模式的考试。所以我对win rt api有所了解。

请不要为“uwp 应用程序在沙盒中运行”之类的答案而烦恼。它们是无用的,因为从用户的角度来看,它们没有说明限制。我特意举了现实生活中的例子,所以我们可以具体一点。

限制可能是,您的应用不支持 3rd 方插件,如自定义语法荧光笔或重构扩展(这是 Windows 商店应用的限制,不确定它是否仍然有效)。

另一个限制可能是,您的应用无法截取屏幕截图,因为 uwp 中没有针对它的 api(实际上不确定它是否属实)

【问题讨论】:

  • 这里解释太长了,有点跑题了。我建议您只潜入 win rt 框架并亲自尝试。基本上,所有应用程序都在与其他应用程序“隔离”的沙盒中运行。
  • win rt 不用我解释了。我不是要求。粗体字的问题很清楚有明确的答案,不是吗。我知道这很难回答,但否则我不会问。答案很困难,只是因为缺乏使用 uwp 的经验,自从它刚刚发布以来,每个人都是这样
  • 我认为这是一个非常好的问题,恳求有知识的人给出具体的答案。然而,这些都很少。

标签: win-universal-app windows-10


【解决方案1】:

“Win32 桌面应用程序”这个短语定义不明确,因为 Win32 API 编程模型自 Windows NT 3.1 以来就已存在。它还可以涵盖过去二十年间的数十种开发语言和 UI 框架。

以下是 UWP 主要差异的简要概述:

  • API 表面区域。 UWP 平台支持许多但不是全部的 Win32 和 COM API,并引入了新的 API。如果您的“Win32 桌面应用程序”主要使用可追溯到 Windows 95 的 ANSI API,那么您需要进行大量更新。如果您主要使用 Windows Vista 时代的 UNICODE API,那么很多东西“正常工作”。见Win32 and COM API for Windows Runtime apps (System)

  • 安全上下文。 UWP 平台在 AppContainer 安全上下文中运行应用程序。 Windows Vista 或更高版本上的“Win32 桌面应用程序”以“标准用户”或“管理员”身份运行。 UWP 应用的访问权限低于“标准用户”,并且永远不能以“管理员”身份运行。 UWP 应用可以请求额外的capabilities 以在用户许可的情况下获得更多权限,但对系统和用户数据的访问权限有限。例如,您无法读取大部分文件系统,只能读取您的安装位置、隔离的应用程序数据文件夹和隔离的临时文件夹。见File access and permissions (Windows Runtime apps)。这也意味着 UWP 应用对设备的访问受限。见Device and sensor overviews

与旧的“一切都是管理员”模型相比,引入标准用户的 Windows Vista 用户帐户控制专注于保护系统和其他用户数据,但几乎没有保护当前用户的数据文件,因为所有应用程序都可以访问甚至修改它。 AppContainer 隔离保护系统和当前用户的数据和设置。鼓励“Win32 桌面应用程序”安装到运行时只读的 C:\Program Files 并使用应用程序数据文件夹,但不是必须的。

  • 通过 AppX 部署。“Win32 桌面应用程序”使用多种部署方式,通常使用 MSI 技术并以“管理员”身份运行。 UWP 应用打包在 AppX 文件中,并始终由系统部署。没有“自定义安装步骤”,因此 UWP 应用无法安装驱动程序或服务、更改 ACL 等。系统负责部署 C/C++ 运行时(必须是 Visual C++ 2015 或更高版本)。

  • 接口模型。有大量的“Win32 桌面应用程序”界面框架,如 WinForms、MFC、WPF 等。其中绝大多数与 UWP 不兼容,因为 UWP 不支持经典 Win32 窗口、WM_ 消息或 GDI/GDI+ .对于 UWP 应用,您可以将 XAML 与 C++ 或 C# 代码隐藏、DirectX(Direct2D 和/或 Direct3D)与 C++(或通过 SharpDX 等第三方程序集的 C#)或 HTML5 与 JavaScript 一起使用。

  • 通过 MSIX 部署。

因此,如果不完全了解产品的代码库和依赖项,即使不是不可能,也很难回答您的问题。

Get started with Windows apps

【讨论】:

  • 我对什么是 uwp 有了很好的了解。我已经阅读了通过 uwp 考试所需的所有 msdn atricles。自从它存在以来,我一直在开发 wpf 应用程序。我只是在桌面开发中没有真正的 uwp 经验。我故意选择 VS Code 作为桌面应用程序的示例,因此很清楚它的功能、代码库和依赖项是什么。您提供的链接 - 入门与我需要知道的完全相反
  • @user3384842 - UWP 应用是从 Windows 应用商店下载的吗? AFAIK,永远不允许以管理员身份运行 WIndows Store 应用程序 - 这将违反此类应用程序始终可以安全运行的概念。另一方面,如果您从其他来源安装了 UWP,它可能有也可能没有以管理员身份运行的选项。
  • @ToolmakerSteve:有一项特殊功能可让您克服 UWP 的所有问题,以便完全信任的 Win32 进程与您的 UWP 应用程序一起运行,并且您可以与该进程通信。但是,您在将此类应用程序提交到公共 Windows 应用商店时可能会遇到问题
  • 链接文件访问和权限(Windows运行时应用程序)变为File access permissions设备和传感器概述变为Devices, sensors, and power
猜你喜欢
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多