Windows 1709版本中OneDrive导致绝大多数程序崩溃的解决方案

最近微软自动推送了 Windows 1709 版本的更新,其中 OneDrive 的更新导致绝大多数程序崩溃。
例如使用 Typora 软件,通过 Windows 的文件对话框打开保存在 OneDrive 中的文件会看到:
这里写图片描述
按照提示的 fstat 研究可以构建一个测试用例:

&"C:\wamp64\bin\php\php7.1.3\php.exe" -r "echo __DIR__; var_dump(stat(__DIR__)); var_dump(stat(dirname(__DIR__)));"

这里写图片描述
可以看到 无法获取 C:\Users\huzh\Onedrive 的信息,但是可以获得上级文件夹的信息。
查询可以发现:

Get-Item C:\Users\huzh\Onedrive

这里写图片描述
在 Mode 中多了一个 l ,对照另一台没有升级的电脑会看到没有这个 l

Get-Item C:\Users\huzh\Onedrive | Select-Object Name,Mode,Attributes

这里写图片描述
可以看到 ReparsePoint。猜测是 Windows 1709 版本的 OneDrive 中使用了 ReparsePoint 技术,导致了这个缺陷。
ReparsePoint 是什么,以及 Windows 1709 版本中1为什么需要使用 ReparsePoint 技术,这个等微软自己出来解释。
使用命令可以查询 ReparsePoint 相关信息

fsutil reparsepoint query C:\Users\huzh\Onedrive

这里写图片描述
为了尝试解决这个缺陷,在 OneDrive 的设置中去掉了“按需文件”,无效。
这里写图片描述
在 OneDrive 的 Office 中去掉了“使用 Office 2016 同步我打开的 Office 文件”,无效。
这里写图片描述
最后使用命令直接删除 ReparsePoint

fsutil reparsepoint delete C:\Users\huzh\Onedrive

成功。
因此直接删除 ReparsePoint 可能是必要条件,前面两个设置不知道是否有必要,不替微软测试了,让微软自己发布解决缺陷的补丁吧。
不过遗留问题是,每次重启电脑后好像都需要使用命令删除一次……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值