操作系统如何知道文件是从互联网下载的。文件备用流,全称 Alternate Data Streams (ADS)
Office 2010 | 中的受保护视图微软学习 (microsoft.com)
从 Internet 下载文件时,Windows附件执行服务会在文件的备用数据流中放置一个标记,以表明它来自 Internet 区域。当 Word、Excel 或 PowerPoint 文件打开并带有此标记时,它将在受保护的视图中打开,直到用户决定信任和编辑它。
那么,这个文件的备用数据流是什么。文件备用流,全称 Alternate Data Streams (ADS),当初设计的目的可能是提供类似 macos 上 Hierarchical File System (HFS) (分层文件系统)) 类似的功能。当初设计的目的可能是提供类似 macos 上 Hierarchical File System (HFS) (分层文件系统)) 类似的功能.
每个文件都有一个默认的文件流,流名称是一个空字符,例如 a.txt::$DATA ,也就是 a.txt,你可以在文件管理器直接看到。你从网上下载的文件,大多除了默认流,还有一个流,例如 a.txt:Zone.Identifier:$DATA,这个 Zone.Identifier 就是文件的备用流名称,一般用来标记从网上下载的文件。你在文件管理器看不到这个文件,但是可以在命令行看到,在下载目录打开 cmd,输入 dir /r ,你就可以看到文件的备用流。excel也正是根据这个后缀判断文件是否来自网络。
你可以输入例如 notepad a.txt:Zone.Identifier:$DATA 来查看这个文件,一般会有类似下面的信息
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://test.com
HostUrl=https://test.com
通过这些信息,就可以判断这个文件是从那里下载的。
当你在NTFS格式的系统中复制文件时,备用流也会跟着复制,如果复制到其他格式的系统,或者通过网络上传,备用流将会被丢弃。
你不能直接删除备用流,删除原文件的时候备用流也会一起被删除,如果需要单独删除流的话,可以使用微软官方的工具 下载地址 ,或者你可以是使用这个工具 AlternateStreamView
当然,你也不能直接创建备用流,因为windows的文件名不能包括 :,不过同样,你可以使用cmd
例如
把 test 写入到 a.txt的名为 hidden的备用流中
echo 'test' > a.txt:hidden:$DATA
或者 直接
notepad a.txt:hidden:$DATA
同样的,你也可以使用其他编程语言创建一个例如 a.txt:hidden:$DATA 的输入流,然后写入数据