我认为Windows支持的NTFS中存在扩展文件属性。我找不到用于访问/更新属性的cmd。
是否有支持此功能的Windows(及其文件系统)?
我尝试了setfattr
,attrib
和其他一些命令。 .container
也不是。
如果扩展属性要在文件系统中保持可移植性(即使是在FUSE中实现的虚拟属性),那么所有目标平台都需要在用户空间(cmd或cmd集)中显示api。
答案 0 :(得分:1)
最接近UNIX attrib
的是EA:NTFS stores partition metadata称为扩展属性(EA),它允许将数据存储为文件或文件夹的属性。
例如,EA are used by IE用于将文件标识为已从网络下载"。
来自维基百科:
在Windows NT上,支持有限长度的扩展属性 FAT,HPFS和NTFS。这是作为OS / 2的一部分实现的 子系统。它们特别被Interix的NFS服务器使用 POSIX子系统为了实现类Unix的权限。该 Windows 10周年更新中添加了适用于Linux的Windows子系统 将它们用于类似目的,存储Linux文件模式,所有者, 设备ID(如果适用)和扩展中的文件时间 属性。另外,NTFS可以存储无限长度的扩展 替代数据流(ADS)形式的属性,一种类型 资源分叉。文件管理器Total Commander的插件,如NTFS 描述和QuickSearch扩展支持过滤 文件列表或搜索ADS Streams中包含的元数据。 Ref.
如果你想做一些安全相关的事情,你想看看自由访问控制列表(DACL)功能; http://www.windowsecurity.com/articles/Understanding-Windows-NTFS-Permissions.html
Powershell可以帮助setting the mode and extended file and folder attributes - 但不幸的是,这只适用于常规属性(不是EA)。
我在3G-Fuse source中找到了与NTFS attrib相关的内容,可能会有所帮助。但是,我怀疑这是真的portable。
答案 1 :(得分:0)
这是一个 GitHub 存储库,其中包含一个允许操作 EA 的工具:https://github.com/jschicht/EaTools - 这显然使用 NtCreateFile
和 NtSetEaFile
来设置和修改它们。
(我还专门询问了 .NET API 以实现跨平台工具:.NET: How to set "extended file attributes" in a cross-platform way? - 目前没有这样的 API。)