uwp 和 win32 桥是不是彻底凉了?

2021-10-04 00:38:47 +08:00
 systemcall

现在一些 Microsoft 商店的软件也可以弹 UAC,之后安装服务和驱动了
在几年前,微软就放开了 Win32 桥。软件除了不污染注册表和系统目录、不能提权以外,和一般的 win32 应用似乎没有多少区别
微软现在弄的 winget,安装的时候就是一般的 exe,还是从官网上下载的。不仅抛弃了 win32 桥,连 appx 等包管理器也抛弃了,导致不仅安装的时候通常会弹出来 GUI,而且安装的软件不能从 winget 卸载
还有就是 Microsoft 商店可以提交 PWA 应用了,但是似乎没有用到什么 UWP 才能用的功能,而且是直接在 Edge 里面跑的,根本没有什么隔离了

6052 次点击
所在节点    Windows
36 条回复
geniussoft
2021-10-04 01:59:27 +08:00
微软真是典型的决策垃圾。

一把好牌,竟然还打这么烂,真是佩服。
cjw1115
2021-10-04 02:18:46 +08:00
是 store 已经不局限于 uwp 应用了,所有类型的应用都可以通过 store 分发了
hs0000t
2021-10-04 03:01:06 +08:00
哪怕这样,也没几个上架更新微软商店的了,现在的微信还是 18 年更新的
microka
2021-10-04 03:35:40 +08:00
所以我对 store 的应用根本不抱任何期望,还是直接安装 win32 exe 应用程序算球。
dingwen07
2021-10-04 06:30:52 +08:00
Windows 需要的是一个完善的 Win32 应用程序沙盒,目前最有希望的是 Sandboxie,最近应该是在开发文件隔离。我是真的希望微软也能做一个内置在系统里,按照微软的软件实力应该很轻松。
kindjeff
2021-10-04 11:06:42 +08:00
wp7 到现在微软已经推了多少种开发范式了,该不会还有公司坚持到现在吧
nieyujiang
2021-10-04 11:33:09 +08:00
微软就是狗熊掰棒子,掰一个,扔一个。推出了那么多 ui 框架,也没见有流行的
ysc3839
2021-10-04 12:23:08 +08:00
appx 没抛弃,还升级成了 msix,商店应用还是要用 appx 或 msix 。
winget 是对标 homebrew cask 这种“软件管家式”的包管理器,这类包管理器没有统一的包格式,主要是帮你自动安装各种软件。
至于 UWP 基本可以认为死了,因为微软的 Windows App SDK 项目已经在把曾经属于 UWP 的相关库拆分出来给 Win32 应用使用了。
ysc3839
2021-10-04 12:26:50 +08:00
@dingwen07 我也希望 Windows 能加入 macOS 那样的沙盒。不过可能是为了保证兼容性吧,微软就一直不加。
以及微软真的要推 UWP 的话,应该学学 macOS 保留传统 POSIX API 那样,保留传统 Win32 API 。
dingwen07
2021-10-04 12:38:22 +08:00
@ysc3839 #9 macOS 那个还不够得劲儿,我记得是应用商店强制,侧加载自愿。macOS主要是作到了权限控制,但是这个感觉也不像是用沙盒机制来做的。Windows 要做类似的估计会比较难,通过加载驱动可能可以绕过,Win 这边也不太可能去限制加载驱动。不过我感觉微软其实可以让用户选择是否将应用程序安装在沙盒里,毕竟我使用的大多数软件还是受信任的,只需要专门隔离那些不受信任的软件。
ysc3839
2021-10-04 12:51:42 +08:00
@nieyujiang 我觉得微软是总想着提升对第三方软件的控制力,但是方法却没用对。
Vista 时期微软推出 WPF,但是 WPF 是跟 .NET 捆绑的,与 Windows 本身独立,大概是怕内置在系统中被别的开发框架使用,想让开发者去用微软自家的 .NET 平台开发。而同时期 macOS 的 Cocoa API 则是内置在系统中的。
后面 WinRT/UWP 虽然内置在了系统中,但是微软却想着把桌面和移动应用统一,让开发者开发桌面应用时“自动”帮 Windows Phone 扩充生态,于是砍掉了传统好用的 Win32 API 。然而微软为了兼容性又不敢把 Win32 应用直接砍掉,于是开发者们就用脚投票,直接不用 UWP 。苹果就明白桌面应用需要那些传统 API,以及触屏和键鼠操作差异较大,于是给桌面和移动平台使用两套不同的 API 。
ysc3839
2021-10-04 12:54:52 +08:00
@dingwen07 macOS 现在对于非商店应用也会限制访问桌面、下载等文件夹了,虽然限制不多,但起码还是开了个好头。
macOS 是使用沙盒机制的,因为你下载个第三方的终端应用,然后在 shell 里面访问相关文件夹也会被限制。
至于加载驱动,macOS 在授予管理员权限后也能加载驱动,这并不是问题。
dingwen07
2021-10-04 13:41:02 +08:00
@ysc3839 #12 macOS 加载驱动(好像叫系统扩展)都没有进入内核,感觉会有比较大的限制。进入内核的属于“内核扩展”,需要将安全性改为“降低安全性”。现在苹果已经不推荐这种方式了。

限制文件访问并不是利用的沙盒机制,权限管理同样。沙盒只在 App Store 下载的应用才强制。

我觉得 Windows 需要一个沙盒只是感觉这可能是限制 Win 32 应用程序权限的唯一手段了,微软不可能学苹果去放弃兼容性。
systemcall
2021-10-04 13:45:23 +08:00
@dingwen07 #13
Windows 也有用户模式驱动程序了,但是的确没有限制应用加载内核模式驱动程序。甚至 Win7 、Win10 刚出来的时候驱动都是要重新适配的,Win10 的用户模式驱动程序适配了的也不多
刚进入 AMD64 架构的时候,驱动还要改很多,加载的驱动还要签名,当年都完成了。现在 Windows 的驱动想要有什么修改,应该比较难了
systemcall
2021-10-04 13:47:02 +08:00
@ysc3839 #12
win32 桥其实是包含文件系统隔离和映射的,注册表也是
可惜微软只挖了个坑,没有去管之后的事情。这个功能要是扩展一下就会很好,再加上 Microsoft 商店的 DRM 和对于商店应用的各种保护,没必要再留后台和加驱动、注册服务了。可惜一手好牌打得稀烂
agagega
2021-10-04 13:50:06 +08:00
@ysc3839
非 Mac App Store 的软件不强制使用沙盒的。但印象里即使是最简单的 fopen,也会弹出终端申请权限的对话框。

我是觉得兼容性很重要,但不用卡那么死。微软可能想着要兼容那些源码都没了的老软件吧。其实步子迈大点,用户和开发商还不是得接受,难道还能转到 Linux 和 Mac 不成。
ysc3839
2021-10-04 14:47:37 +08:00
@systemcall 那个隔离好像不是强制的,并不是真正意义上的沙盒。
Cooky
2021-10-04 14:51:58 +08:00
@dingwen07 微软家大业大,新项目有各种公司内部斗争,快不了
ikas
2021-10-04 15:53:13 +08:00
其实目前 windows 上 app 形态比较多
通常分为 win32 app,uwp app,win32 打包 app(也就是 appx,msix 等)
win32 app 就是传统 app
uwp app 通常在商店上提供,这些 app 具有限制权限,在隔离环境中运行,但是现在同样可以配置为 runFullTrust 权限
win32 打包 app 通常都是直接具有 runFullTrust 权限,这类 app 可以调用 win32 与 winrt api

uwp 是否死了?uwp 目前确实有一些停滞,比如 c#仅仅支持 7,但是 win11 中大量内置 app 依然使用 uwp 这一模型进行开发,比如最新的截图,商店等等,并且 win11 的外观设计规范目前依然只有 uwp 的控件库(windows ui2.6+)提供支持,并且现在你可以在 win32app 中 host uwp 控件,甚至 host 一个完整的 uwp app,比如 win11 最新的画图,资源管理器

目前微软最新的 app 开发方案是基于 windows app sdk,其采用 windows ui3 作为 ui 库,同时支持 win32 与 win rt 这两套 api,你可以随意混用.但是现在 windows app sdk 开发的 app 默认是 runFullTrust 权限,不管是作为打包 app(appx,msix)或者非打包 app
ikas
2021-10-04 16:10:44 +08:00
上面说的有点乱..其实主要是微软现在更加开放,不再限制开发者选择什么..
比如以前你要么选择 win32,要么选择基于 winrt 开发 uwp.. 而现在.你几乎可以混用

另外关于权限,所谓"容器化,沙箱"等等
时至今日,你不能再根据 win32 与 uwp 这些简单的形态来看一个 app 是否是受限的是安全的
app 运行在什么形态下,已经交由开发者决定
就好比上面说的,我可以打包一个 uwp,但是配置了 runFullTrust 权限
再比如开发一个 win32 app(基于 windows app ask),但是配置 Partial Trust 权限,当然 Partial Trust 目前还未公开

为什么微软放弃了强制要求呢...限制的严格了..开发者不爽,限制的不严格了,用户不爽..毕竟 pc 不是手机
即便是放到 osx 上,也有大量开发者讨厌强制沙箱

那么作为用户呢..目前只能优先选择开源的,信任的开发者..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX