Articles of ntfs

如何查看目录的子文件是否已更改

在Windows中,是否有一个简单的方法来判断一个文件夹是否有一个已经改变的子文件? 我validation了,文件夹上的最后修改date在子文件更改时不会更新。 有没有我可以设置,将修改此行为的registry项? 如果重要,我正在使用NTFS卷。 我最终想从C ++程序中获得这个能力。 以recursion方式扫描整个目录对我来说不起作用,因为该文件夹太大了。 更新:我真的需要一种方法来做到这一点,而没有一个进程在更改发生时运行。 所以安装一个文件系统监视器对我来说并不是最理想的。 Update2:归档位也将无法正常工作,因为它具有与上次修改date相同的问题。 该文件的归档位将被设置,但文件夹不会。

NTFS提供了哪些可靠性保证?

我想知道NTFS提供有关存储在其上的数据的可靠性保证? 例如,假设我正在打开一个文件,追加到最后,然后closures它,在这个操作过程中,电源随机熄灭。 我可以find完全损坏的文件? 我问,因为我只是有一个系统locking,发现两个被附加到完全清零的文件。 也就是说,大小正确,但是完全由零字节组成。 我以为这不应该发生在NTFS上,即使事情失败了。

在NTFS卷上快速find一组文件名,最好是通过MFT

我正在编写一个工具,查找Mac和Windows的iTunes资料库的丢失文件。 在Mac上,我可以使用精彩的“CatalogSearch”function快速find文件。 然而,在Windows上,似乎没有用于通过文件名进行search的OS API(或者在那里?)。 一些谷歌search后,我了解到有工具(如TFind , Everything )直接读取NTFS目录并扫描它以查找名称的文件。 我也想这样做,但不必从头开始(尽pipe我过去已经写了不less的磁盘工具,但我从来没有精力去挖掘NTFS)。 我想知道是否有作为一个.dll,可以作为一个.dll的现成的库,这会给我这个searchfunction:传入一个文件名,找回它的path。 或者,Windows索引服务呢? 至less当我在最近安装的XP Home系统上试过这个时, 开始菜单下的search操作实际上会扫描所有目录,这表明它没有完整的数据库。 由于我不是Windows用户,我想知道为什么这不起作用。 最后,我需要的完整解决scheme是:我有一个要查找的文件名列表,我需要search整个磁盘(或使用数据库)的代码,以便一次性获得所有结果。 例如,search不应该为我正在查找的每个文件启动新的全面扫描。 这就是为什么我认为MFT的方式是最佳的,因为它可以快速迭代所有名称,比较每个名单。

直接从文件系统获取文件校验和,而不是显式计算

我猜测一个典型的文件系统往往会保留它pipe理的每个文件的校验和/ CRC /哈希,所以它可以检测到文件损坏。 这猜测是正确的吗? 如果是,有没有办法访问它? 我主要对Windows和NTFS感兴趣,但对其他平台的评论也会受到欢迎…语言在这一点上是不重要的,但是如果可能的话,我想避免汇编。 谢谢。

获取磁盘/集群号上的文件偏移量

我需要得到有关文件位于NTFS磁盘上的位置的任何信息。 绝对偏移,群集ID ..什么的。 我需要扫描磁盘两次,一次获得分配的文件,一次我需要直接在RAW模式下打开分区,并尝试find其余的数据(从删除的文件)。 我需要一种方法来理解,我发现的数据和我之前作为文件处理过的数据是一样的。 当我在原始模式下扫描磁盘时,我发现的数据的偏移量可以以某种方式转换为文件的偏移量(具有关于磁盘几何的信息)。 有没有办法做到这一点? 其他解决scheme也被接受。 现在我正在玩FSCTL_GET_NTFS_FILE_RECORD,但目前无法使其正常工作,我不确定这会有帮助。 UPDATE 我发现下面的函数http://msdn.microsoft.com/en-us/library/windows/desktop/aa364952(v=vs.85).aspx它返回包含nFileIndexHigh和nFileIndexLowvariables的结构。 文档说 The identifier that is stored in the nFileIndexHigh and nFileIndexLow members is called the file ID. Support for file IDs is file system-specific. File IDs are not guaranteed to be unique over time, because file systems are free to reuse them. In some […]

是否有可能知道哪个应用程序创build了一个文件?

Windows(或一般的NTFS)是否存储在任何地方创build文件的应用程序的名称? 或者是有一个确定哪个应用程序负责创build一个文件(几秒钟后),它是最初创build后的强大方式? 我们正在制定一个文件pipe理系统。 它使用FileSystemWatcher监视FS的新文件 – 这一部分很简单 – 但我希望能够跟踪哪个应用程序/版本创build了它检测到的新文件。 我知道我可以查找属于正在运行的进程的打开的文件句柄,但想必这种方法只会在应用程序创build文件后才能工作,然后保持locking,对吗? 有没有更好的办法?

估计NTFS卷上的USNlogging数

当首次使用USN日志时,必须使用FSCTL_ENUM_USN_DATA控制代码来枚举卷的整个USNlogging集。 这通常是一个漫长的操作。 有没有一种方法可以在运行之前估计卷上的logging数量,因此可以显示进度? 我猜测整个卷的USN数据是从MFT生成的,每个文件一个logging(大约)。 因此,估计MFT中活动文件数量的一种方法是可行的。

Windows NTFS和区分大小写

根据维基百科的说法,NTFS允许两个类似的名字,不同的大小写(如Readme.txt和readme.txt),只有windows文件API才能阻止。 当前的Windows文件系统,如NTFS,区分大小写; 这是一个readme.txt和一个Readme.txt可以存在于同一个目录下。 但是,Windows应用程序中用于文件访问的API不区分大小写,这使得文件名从应用程序的angular度来说不区分大小写。 因此,应用程序只能访问其中一个文件名不同的文件,如果提供的文件名不明确,某些命令可能会失败 从Linux发表我问自己有什么可能性,这两个文件存在,只能访问其中一个文件,使其成为一个理想的安全问题。 什么是“Windows API”的意思。 有另一种方式来访问这些重复的文件? 是否可以使用磁盘驱动程序(格式化驱动程序)直接访问文件系统?

NTFS连接点和符号链接有什么区别?

在高层次上, NTFS连接点和符号链接之间唯一明显的区别是连接只能是目录,而SymLinks也可以作为目标文件。 两者之间还有什么其他的区别? (注意,我已经看到了这个问题 ,我正在寻找的是有点不同 – 这个问题是寻找一个专业和清单,我正在寻找一组技术差异)

在文件中访问备用数据stream

在NTFS文件系统上,可以在单个文件中包含备用数据stream。 是否可以以完全pipe理的方式访问这些信息? 编辑:此外,我想从现有文件中的备用stream中读取。 这是如何实现的(如果不能使用托pipe代码,则使用PInvoke)? 这个问题是类似的,但是从2009年初,.Net的答案使用PInvoke写入文件,而不是从它读取。 从那时起,对于这个function的支持(对.net 4.0?),可以做到这一点,而不使用PInvoke?