Replying to Avatar CXPLAY

很多文件都有自己的独特元数据扩展, 典型的就是 JPG 图片的 EXIF 信息. 在管理大量文件的时候注意到元数据的重要性, 写给计算机看的元数据是文件头, 是数据包头. 写给人类看的, 规范的文件元数据很少, 应用广泛的除了 EXIF, 还有用在音频文件的 IDv2, IDv3 标签, 视频封装容器格式中用来保存封面的元信息, 电子书的书籍信息, 电子文档里面 Microsoft 给 Excel, Word, PPT 都添加了各种各样的元信息, 一些归档软件还能给 ZIP 添加注释.

对于这类基于文件格式的元信息还是主要看操作这类文件格式的软件的适配, 而更加深入一层的是文件系统的元信息, 比如 NTFS 的备用数据流(Alternate data stream, ADS):

- **NTFS #Alternate data stream (ADS) - Wikipedia**: https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS)

- [MS-FSCC: NTFS Streams | Microsoft Learn](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c54dec26-1551-4d3a-a0ea-4fa40f848eb3)

应用程序可以直接在文件系统上给文件添加额外的元信息, 目前使用这种原理的软件给文件添加额外信息的软件只发现了一个: Directory Opus. 当然也能自己用 PowerShell 给文件添加和读取备用数据流:

![用 PowerShell 给文件添加备用数据流]()

- [Streams - Sysinternals | Microsoft Learn](https://learn.microsoft.com/en-us/sysinternals/downloads/streams)

但是说了这么多, 上面提到的元信息都是只针对文件的, 对文件夹的元信息, 就算是 NTFS 的备用数据流也没有办法. 虽然直接用文件夹名称存储元信息是一种直观的办法, 但是限制就会变得很多, 比如特殊字符, 来自操作系统的路径长度限制, 来自归档文件格式算法的路径长度限制([tar 限制 255 个字符](https://www.gnu.org/software/tar/manual/html_section/Formats.html)), 来自文件系统的路径长度限制(NTFS 限制 65535 个字符), 如果不选择更好的办法, 用文件夹名称的写元信息就会陷入一个来自方方面面的 "木桶效应". 没有任何文件系统支持给文件夹添加元数据, 或许就只能另辟蹊径了, 比如给文件目录建立索引, 然后在索引里面写元信息, 类似于给文件目录建数据库, 当然最后还要用其他的软件读取数据库和目录建立操作关系, 相当于要重写一个文件管理器软件. 更加简单的索引比如 [Descript.ion](https://zh.wikipedia.org/zh-hans/Descript.ion) 目前还在使用, 被 ACDSee, XnView, Total Commander 还有 7-Zip, 以及上面提到过的 Directory Opus 采用. 这些软件要么本身就是一个文件管理器, 要么就是附带操作文件目录的功能的软件.

文件夹也需要元信息, 但解决办法还没有找到, 或许以后也只能求助于第三方文件管理器了.

# NTFS 备用数据流(ADS)的应用

唯一支持保存 NTFS 数据流的归档格式是 RAR, 而唯一支持 RAR 归档生成的软件是 WinRAR. 不知道带有 NTFS 数据流的文件被放在了在其他文件系统会怎么样呢?

NTFS 数据流可能会被用来标记一些 Windows 软件生成文件的特殊属性. 现在还能随时见到, 从 Telegram 下载的部分文件可能会在 `Zone.Identifier` 的 ADS 中被标记为 `3`(常见的有 exe 和归档文件格式), 这个标记在注册表中有对应的条目 `URLACTION_SHELL_EXECUTE_HIGHRISK`, 被用来标记 Windows XP SP2 或 IE6 以上版本从 URL 中得到的 "可能被病毒或其他恶意代码利用的文件类型". 这个标记称为 "URL安全区域(URL Security Zones)", 其值有 `0`, `1`, `2`, `3`, `4`, 分别对应本地计算机, 本地网络, 受信任站点, 互联网, 受限站点. Telegram 下载的敏感文件对应区域 `3`, 位于**互联网**文件的安全策略中:

About URL Security Zones (Windows) | Microsoft Learn:

https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537183(v=vs.85)

这些被标记的文件类型有很详细的设定:

IE security zones registry entries for advanced users - Browsers | Microsoft Learn:

https://learn.microsoft.com/en-us/troubleshoot/developer/browsers/security-privacy/ie-security-zones-registry-entries#zones

其每个文件类型对应一个策略标记:

URL Policy Flags (Windows) | Microsoft Learn:

https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537179(v=vs.85)

常用的有 `0x00`(允许), `0x01`(提示), `0x03`(禁止). Telegram 下载的 RAR 归档文件会被弹出提示, 被归类成了 `1806`: Miscellaneous: Launching applications and unsafe files, 默认操作是 `0x01`(提示). 然而URL安全区域早就已经是 Internet Explorer 开发中的老东西了.

#Windows #NTFS #文件管理

nostr:nevent1qqsgw9jx5nvvv5jv9t7xrsql56kmmnnp6e5un7fdeyjsunx6hetv7kcppemhxue69uhkummn9ekx7mp0qy08wumn8ghj7mn0wd68yttsw43zuam9d3kx7unyv4ezumn9wshszynhwden5te0dehhxarj9e3hstndwvhszythwden5te0dehhxarj9emkjmn99uq32amnwvaz7tmjv4kxz7fwv3sk6atn9e5k7tcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhhyetvv9ujumn0wd68ytnzvuhszxnhwden5te0wfjkccte9eeks6t5vehhycm99ehkuef0qyd8wumn8ghj7un9d3shjvfwdehhxarjvd5xzapwd9hj7qg6waehxw309aex2mrp0yezumn0wd68ycmgv96zu6t09uhgvuwq

Reply to this note

Please Login to reply.

Discussion

No replies yet.