1

使用来自 C/C++ 的原始 Windows 编程 API 和文件句柄或文件、文件夹、链接等的路径;如何以编程方式确定文件(等)是否支持ADS(备用数据流)?

我假设我必须知道的一件事是该文件是否在 NTFS 分区上,但我再次知道它可能会挂载某种 Mac 或 *nix 文件系统,这些文件系统支持数据分叉或某种替代数据流,并且所有这些情况都可能被单个 API 调用或数据结构覆盖。

其次,我不确定是否可以存在于 NTFS 分区上的每种对象都可以具有 ADS - 例如文件夹、符号链接、硬链接等等?

什么 API 等可以处理所有情况来告诉我给定文件等是否具有 ADS 的能力?

(对于这个问题,我不是在寻找文件是否ADS,而是在寻找文件是否有可能拥有它们。例如,它可能包括我刚刚创建的文件。)

4

2 回答 2

3

ADS 是 NTFS 的一项功能。您可以使用它GetVolumeInformation()来检测给定路径是否在 NTFS 文件系统上,即使该卷是否完全支持 ADS。AFAIK,只有真实文件才能附加 ADS。您可以GetFileAttributes()用来检测路径是否是文件、目录、符号链接等。

于 2012-10-25T09:20:34.250 回答
1

Like any other file, Directories can also host other ADS! Any file object on NTFS can store more than one DATA Stream. The 'visible' one is named, any additional data stream is 'invisible' as far as Explorer is concerned. Actually, at the prompt now one can display ADS using the /R switch when invoking dir.

于 2012-10-31T19:39:34.970 回答