短语“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一起使用 .
因此,如果不能完全理解产品的代码库和依赖关系,回答您的问题即使非常困难 .