我以为Windows支持的NTFS中存在扩展文件属性。我找不到访问/更新属性的cmd。有没有一种Windows(及其文件系统)支持这一点?我尝试了getfattr、setfattr和其他一些命令。attrib也不是。如果扩展属性要保持跨文件系统的可移植性(甚至是在FUSE中实现的虚拟属性),那么所有目标平台都需要在用户空间中提供一个API(一个cmd或一组cmd)。
getfattr
setfattr
attrib
wydwbb8l1#
与UNIX attrib最接近的是EA:NTFS stores partition metadata称为扩展属性(EA),它允许将数据存储为文件或文件夹的属性。EA,例如,are used by IE,用于将文件标识为"已从Web下载"。维基百科:在Windows NT上,FAT、HPFS和NTFS支持有限长度的扩展属性。这是OS/2子系统的一部分。Interix POSIX子系统的NFS服务器特别使用它们来实现类Unix权限。Windows 10周年更新中添加的Linux Windows子系统使用它们来实现类似的目的,存储Linux文件模式、所有者、设备ID(如果适用)和文件时间。此外,NTFS可以以备用数据流(ADS)(一种资源分支)的形式存储无限长度的扩展属性。文件管理器Total Commander的插件,如NTFS Description和QuickSearch eXtended,支持通过过滤文件列表或搜索ADS Streams. Ref中包含的元数据。如果你想做一些与安全相关的事情,你想看看自由访问控制列表(DACL)的功能;http://www.windowsecurity.com/articles/Understanding-Windows-NTFS-Permissions.htmlPowershell可以帮助setting the mode and extended file and folder attributes--但不幸的是,这只适用于常规属性(不适用于EA)。我在3G-Fuse source中发现了一些与NTFS属性相关的东西,可能会有帮助。但是,我怀疑这是否是真正的portable。
ne5o7dgx2#
下面是一个GitHub repo,其中包含一个允许操作EA的工具:https://github.com/jschicht/EaTools-这显然使用NtCreateFile和NtSetEaFile来设置和修改它们。(我还特别询问了.NET API是否可以实现跨平台工具:.NET: How to set "extended file attributes" in a cross-platform way?-目前没有此类API。)
NtCreateFile
NtSetEaFile
4bbkushb3#
您还可以尝试使用NTFS的Alternate Data Streams API,像samba这样的网络文件服务器使用它来存储导出共享的扩展属性。看看这个:https://www.codeproject.com/Articles/2670/Accessing-alternative-data-streams-of-files-on-an
3条答案
按热度按时间wydwbb8l1#
与UNIX
attrib
最接近的是EA:NTFS stores partition metadata称为扩展属性(EA),它允许将数据存储为文件或文件夹的属性。EA,例如,are used by IE,用于将文件标识为"已从Web下载"。
维基百科:
在Windows NT上,FAT、HPFS和NTFS支持有限长度的扩展属性。这是OS/2子系统的一部分。Interix POSIX子系统的NFS服务器特别使用它们来实现类Unix权限。Windows 10周年更新中添加的Linux Windows子系统使用它们来实现类似的目的,存储Linux文件模式、所有者、设备ID(如果适用)和文件时间。此外,NTFS可以以备用数据流(ADS)(一种资源分支)的形式存储无限长度的扩展属性。文件管理器Total Commander的插件,如NTFS Description和QuickSearch eXtended,支持通过过滤文件列表或搜索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属性相关的东西,可能会有帮助。但是,我怀疑这是否是真正的portable。
ne5o7dgx2#
下面是一个GitHub repo,其中包含一个允许操作EA的工具:https://github.com/jschicht/EaTools-这显然使用
NtCreateFile
和NtSetEaFile
来设置和修改它们。(我还特别询问了.NET API是否可以实现跨平台工具:.NET: How to set "extended file attributes" in a cross-platform way?-目前没有此类API。)
4bbkushb3#
您还可以尝试使用NTFS的Alternate Data Streams API,像samba这样的网络文件服务器使用它来存储导出共享的扩展属性。
看看这个:https://www.codeproject.com/Articles/2670/Accessing-alternative-data-streams-of-files-on-an