我知道新的UWP应用程序模型与“传统”Win32应用程序相比有一些限制。
让我们以Visual Studio Code作为桌面应用程序的一个示例。
如果是UWP应用程序,Visual Studio Code的哪些功能缺失或必须与用户不同?
编辑: 我已经完成了微软认证考试“使用C#开发Windows应用商店应用的基本知识”和考试70-355:通用Windows平台 - 应用数据,服务和编码模式。所以我对win rt api有所了解。
请不要打扰“uwp app在沙盒中运行”等答案。它们毫无用处,因为它们没有说明用户视角的限制。我故意把现实生活中的例子,所以我们可以具体化。
限制可能是,您的应用无法支持第三方插件,如自定义语法高亮显示或重构扩展(这是Windows商店应用的限制,不确定它是否仍然有效)。
另一个限制可能是,您的应用无法截屏,因为uwp中没有api(实际上不确定它是真的)
答案 0 :(得分:43)
短语“Win32桌面应用程序”是一个不明确的定义,因为自Windows NT 3.1以来Win32 API编程模型已经存在。在过去的二十年中,它还可以涵盖数十种开发语言和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)。
< / LI> UI模型。 “Win32桌面应用程序”有很多UI框架,如WinForms,MFC,WPF等。其中绝大多数与UWP不兼容,因为UWP不支持经典的Win32窗口,WM_
消息或GDI。 / GDI +。对于UWP应用程序,您可以将XAML与C ++或C#代码隐藏,DirectX(Direct2D和/或Direct3D)与C ++(或通过第三方程序集如SyxX的C#)或HTML5与JavaScript一起使用。
如果没有完全理解产品的代码库和依赖关系,回答你的问题是非常困难的,如果不是不可能的话。