首页 文章

桌面应用程序中的UWP限制

提问于
浏览
40

我知道新的UWP应用程序模型与“传统”Win32应用程序相比有一些限制 .

我们以Visual Studio Code作为桌面应用程序的示例 .

What features of Visual Studio Code were missing or had to be different from user perspective, if it was an UWP app?

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

请不要打扰“uwp app在沙盒中运行”等答案 . 它们毫无用处,因为它们没有说明用户视角的限制 . 我故意把现实生活中的例子,所以我们可以具体化 .

限制可能是,您的应用程序无法支持第三方插件,如自定义语法高亮显示或重构扩展(这是Windows商店应用程序的限制,不确定它是否仍然有效) .

另一个限制可能是,你的应用程序无法截取屏幕截图,因为uwp中没有api(实际上不确定它是真的)

1 回答

  • 43

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

    以下是关键UWP差异的快速概述:

    • API surface area. UWP平台支持许多但不是所有的Win32和COM API,并引入了新的API . 如果您的"Win32 desktop app"主要使用可追溯到Windows 95的ANSI API,那么您需要进行大量更新 . 如果您使用的主要是Windows Vista时代的UNICODE API,那么很多东西"just works" . 见Win32 and COM API for Windows Runtime apps (System) .

    • Security context. UWP平台在AppContainer安全上下文中运行应用程序 . "Win32 desktop apps"在Windows Vista或更高版本上运行为"Standard User"或"Administrator" . UWP应用程序的访问权限少于"Standard User",并且永远不能作为"Administrator"运行 . UWP应用程序可以请求额外的capabilities以获得用户许可的更多权限,但对系统和用户数据的访问权限有限 . 例如,您无法读取大多数文件系统,只能读取已安装的位置,独立的应用程序数据文件夹和隔离的临时文件夹 . 见File access and permissions (Windows Runtime apps) . 这也意味着UWP应用程序对设备的访问权限有限 . 见Device and sensor overviews .

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

    • AppX deployment. "Win32 desktop apps"使用任意数量的部署方式,通常使用MSI技术并运行"Administrator" . UWP应用程序打包在AppX文件中,并始终由系统部署 . 没有"Custom Install Step",因此UWP应用程序无法安装驱动程序或服务,更改ACL等 . 系统负责部署C / C运行时(必须仅限Visual C 2015) .

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

    因此,如果不能完全理解产品的代码库和依赖关系,回答您的问题即使非常困难 .

    Get started with Windows apps

相关问题