无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11629|回复: 13
打印 上一主题 下一主题

[讨论] 发现WIN10居然可以无视exFAT的写保护机制

  [复制链接]
跳转到指定楼层
1#
发表于 2018-12-19 18:11:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 朱玛12345678 于 2018-12-19 18:11 编辑

首先在这里分享一条经验:只有“exFAT”文件系统才会有强制拔出或意外断电后出现分区只能读取不能写入的情况。
其解决方法也很简单:在资源管理器中右键需要修复的exFAT分区→属性→工具→查错→开始检查并修复,或管理员运行CMD命令提示符输入→chkdsk X: /F→回车即可解决(其中的X改成要修复分区的盘符)。



很早以前曾注意过这个问题:在使用U盘的过程中强制拔出或意外断电后下次插入电脑时系统会弹出一个要求扫描并修复磁盘对话框,而且在检查修复卷之前整个分区和里面的所有文件都是只能读不能写的。

以前用的系统是WIN7,如果exFAT分区遇到只能读取的情况就要做一次磁盘检查才能解决,后来自从改用了WIN10之后就再也没有出现过这种不能写入的问题,于是决定抽空去研究一下这个问题的产生原因。
研究过exFAT文件系统的人应该都知道,exFAT对扇区数据有着非常严格的校验机制,如果有不完全的数据写入或分区表部分更改任意一个字节的数据都会导致该卷只读或卷损坏提示,出现此类问题则需要手工修复。

后来经过研究发现,这个只读的问题其实是触发了exFAT特有的一个叫做“TFAT”的保护机制,该机制的原理是采用双索引校验在数据写入完成后同步更替保证其数据的完整性,此功能弥补了FAT系列格式没有NTFS中$LogFile功能的缺陷。
当在设备接入后系统会自动识别并装载exFAT卷,同时校验比对FAT簇链表中两个索引中的写入临时索引是否成功转存为完成标准索引来决定是否触发TFAT写入保护,如果是 则挂载可写且可以正常读写使用,如果否 则挂载只读并要求手动chkdsk来解除保护。
这个写保护功能基于文件系统底层的机制,理论上是不能被操作系统所绕过的。
至少在触发写保护机制时测试了在XP、Win7、Android、MacOS等系统中都不能写入数据。

但又发现了唯独WIN10系统却可以无视TFAT写保护机制并能够写入完整数据。

不知道微软在exFAT.sys驱动中用了什么方式实现的这个特性,不过这么做的好处倒是避免了通过直接升级文件系统的版本提供新特性而导致出现兼容性问题(顺便吐槽一下WIN10默认会对ReFS v3.x自动升级版本号导致不能向下兼容旧系统的激进策略)。
希望其他平台可以去尝试着借鉴这类方法来优化体验。

评分

参与人数 4无忧币 +20 收起 理由
freesoft00 + 5
hhy + 5 赞一个!
netants2011 + 5 很给力!
20090101 + 5 赞一个!

查看全部评分

2#
 楼主| 发表于 2018-12-19 18:11:52 | 只看该作者
虽然exFAT的校验机制在一定程度上确实起到了保护数据的作用,但是这种被动修复方式也会对正常使用造成影响以及容易被人误解为损坏,属于微软当时在设计开发此文件系统的时候对这一问题考虑不周全所导致的,不过后来微软意识到问题后在发布新一代的ReFS文件系统中改用了先进的主动修复方式保证数据完整性以及在WIN10中对exFAT的体验优化已基本解决了这类会影响正常使用的问题。
回复

使用道具 举报

3#
 楼主| 发表于 2018-12-19 18:16:49 | 只看该作者
本帖最后由 朱玛12345678 于 2018-12-23 22:39 编辑

不过利用这个写保护特性给U盘上保护倒是可以防止感染病毒,当然除WIN10外的系统才有效。
具体可参考此贴:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=412106
回复

使用道具 举报

4#
发表于 2018-12-19 19:04:29 | 只看该作者
喜欢你技术性的文章.
回复

使用道具 举报

5#
发表于 2018-12-19 19:06:59 | 只看该作者
感谢楼主科普
回复

使用道具 举报

6#
发表于 2018-12-19 19:40:46 | 只看该作者
估计是win10的一个bug

点评

不属于BUG类,这个在15年的初版WIN10中就有了,过了3年多一直到现在的版本中也有,微软肯定是有意要这么做的。  详情 回复 发表于 2018-12-20 10:17
回复

使用道具 举报

7#
发表于 2018-12-19 20:35:13 | 只看该作者
本帖最后由 vaf 于 2018-12-19 20:42 编辑

XP、Win7、Android、MacOS等系统中都不能写入数据。
你错了,不是不能,是故意。
这些大公司哪个不能,是遵守一种规范,是故意不违反罢了。

所以,10 能了,稀罕了,一点也不稀罕,他一不小心,就忘了规范。

这些能与不能,不是技术问题,只是愚弄公众的一种专业共识。

谁有技术都能突破这种限制。
就像闯红灯一样,不是红灯不能闯,是闯不闯的问题。

点评

规范是死的,人是活的。遵守规范没有问题,但对于已经严重过时或存在明显缺陷的规范就有必要去修改。 FS这种东西关系到底层的数据存储机制不能随意修改,一旦出现了BUG后果往往会很严重。MS不公开推广使用这种方式  详情 回复 发表于 2018-12-20 10:10
回复

使用道具 举报

8#
发表于 2018-12-20 08:42:36 | 只看该作者
有一个内存卡也是这样的,看了楼主的文章知道了在WIN10下可以解决这个问题
回复

使用道具 举报

9#
 楼主| 发表于 2018-12-20 10:10:11 | 只看该作者
vaf 发表于 2018-12-19 20:35
XP、Win7、Android、MacOS等系统中都不能写入数据。
你错了,不是不能,是故意。
这些大公司哪个不能,是 ...

规范是死的,人是活的。遵守规范没有问题,但对于已经严重过时或存在明显缺陷的规范就有必要去修改。
FS这种东西关系到底层的数据存储机制不能随意修改,一旦出现了BUG后果往往会很严重。MS不公开推广使用这种方式,其他公司自然就不会去用。
毕竟这个文件系统是微软的专利,它制定的规范自然也有权去修改,至少在自家的WIN10系统中就尝试改了这一规范,只不过没有向外开放授权而已。
另外你说的也不对,其他公司不是故意不违反,只是没有微软授权方案就没办法去用新规范,如果私自逆向研发一旦搞出缺陷导致用户数据丢失厂商付不起这个责任。

点评

vaf
当然,没有利益的情况下,谁也不会自找麻烦。 但不等于人家不能。  详情 回复 发表于 2018-12-20 19:41
回复

使用道具 举报

10#
 楼主| 发表于 2018-12-20 10:17:06 | 只看该作者
haonan 发表于 2018-12-19 19:40
估计是win10的一个bug

不属于BUG类,这个在15年的初版WIN10中就有了,过了3年多一直到现在的版本中也有,微软肯定是有意要这么做的。
回复

使用道具 举报

11#
发表于 2018-12-20 19:41:01 | 只看该作者
朱玛12345678 发表于 2018-12-20 10:10
规范是死的,人是活的。遵守规范没有问题,但对于已经严重过时或存在明显缺陷的规范就有必要去修改。
FS ...

当然,没有利益的情况下,谁也不会自找麻烦。
但不等于人家不能。
回复

使用道具 举报

12#
发表于 2018-12-22 09:16:27 | 只看该作者
WIN10对ReFS 自动升级 导致不能向下兼容旧 的问题导致我损失过几次文件,虽然后面恢复了,但让人不爽!

点评

禁止自动升级要打一个注册表,重启生效: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] "RefsDisableVolumeUpgrade"=dword:00000001 如果已经升  详情 回复 发表于 2018-12-22 09:46
回复

使用道具 举报

13#
 楼主| 发表于 2018-12-22 09:46:03 | 只看该作者
本帖最后由 朱玛12345678 于 2018-12-22 19:46 编辑
20121010168 发表于 2018-12-22 09:16
WIN10对ReFS 自动升级 导致不能向下兼容旧 的问题导致我损失过几次文件,虽然后面恢复了,但让人不爽!

禁止自动升级要打一个注册表,重启生效:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"RefsDisableVolumeUpgrade"=dword:00000001
如果已经升级了则不能降级,只能重新格式化。
另外最新的R-Studio 8.9.173587版本已经可以支持ReFS 3.4版本的数据恢复了

点评

谢谢你的热心帮助,这已经是很早之前的事了,当时就把数据恢复出来了  详情 回复 发表于 2018-12-24 09:29
回复

使用道具 举报

14#
发表于 2018-12-24 09:29:37 | 只看该作者
朱玛12345678 发表于 2018-12-22 09:46
禁止自动升级要打一个注册表,重启生效:
Windows Registry Editor Version 5.00

谢谢你的热心帮助,这已经是很早之前的事了,当时就把数据恢复出来了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-20 01:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表