问题标签 [ntfs-mft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
821 浏览

ntfs-mft - 如何通过读取 $MFT 文件记录来提取任何文件的大小?

我需要通过读取该特定文件的 MFT 记录来获取文件大小。请告诉我在哪里可以找到文件大小和文件在磁盘上的位置的偏移量。

0 投票
2 回答
1225 浏览

file - NTFS $MFT 文件可以有子记录吗?

我正在编写一些代码来解析 NTFS 卷中磁盘上的 MFT。这很简单,但是一个特殊的极端案例引起了我的注意,我在互联网上的任何地方都找不到明确的答案。

对于 NTFS 中的普通文件,如果文件的属性多于单个记录(例如,如果文件有许多硬链接,则有许多 $FILE_NAME 属性,或者许多$DATA 属性,如果它有许多备用数据流)。

参考号 0 处的 $MFT 文件保存 MFT 本身的数据运行。通常它是一个没有孩子的单一记录。$MFT 文件是否有可能有子记录?如果可能的话,你怎么知道在哪里可以找到它们?这些子记录是否必须以非常低的参考编号存储,以便您可以可靠地获取它们,而不必已经解析 $MFT 以知道它们在磁盘上的位置?

0 投票
1 回答
469 浏览

windows - 不完整的 chkdsk 日志文件

长话短说:我克隆了一个损坏的 ntfs 硬盘(损坏的 $MFT 根条目)并启动到我的本机 Windows 以执行 chkdsk 运行。

在启动窗口执行不需要的 chkdsk 运行。chkdsk 运行非常成功。不幸的是,chkdsk 日志似乎不完整。

我从事件查看器中读取了事件 id 为 1001 的日志,并使用以下命令直接在 power shell 中:

因此,我无法声明 chkdsk 运行可以(不)恢复哪些集群以及多少集群。日志由 274 行组成,似乎在过程中被破坏了。

问题: 是否有可以管理日志的其他资源?在 274 行之后日志可能会被破坏是否有原因?

0 投票
3 回答
3143 浏览

c++ - 如何获取 USN 期刊查询的完整路径?

我正在尝试通过 MSDN 上的示例(https://msdn.microsoft.com/en-us/library/windows/desktop/aa365736%28v=vs.85%29.aspx)了解如何查询 USN 日志为了跟踪 NTFS 驱动器上的文件更改。示例代码运行良好。

然而,在这个示例代码中,USN_RECORD 结构只返回一个文件参考号和文件名。它不会返回文件的完整路径。有谁知道如何查询 USN 日志以返回完整路径?或者有一种方法可以从文件参考号中获取完整路径?

谢谢。

0 投票
2 回答
420 浏览

ntfs - 在运行时从 MFT 读取文件内容

我必须读取正在运行的 Windows(XP 或更高版本)的 MFT 文件,并通过它到达保存机器上特定文件内容($DATA)的 HD 扇区。

问题在于,在读取 MFT 直到获取相关扇区并读取它们之间,文件系统结构可能会发生变化,并且位置可能不再相关。

有没有办法将系统“冻结”一段时间?也许可以保证这个文件不会有变化?锁定特定文件以使其不在扇区之间移动?(包括由于优化和间接变化)

当然,我不希望复制整个硬盘并静态工作,因为这是一个缓慢的操作,此时将不允许正常使用系统。不用说,我不想使用操作系统的API函数或编写驱动程序。

0 投票
2 回答
2503 浏览

c# - 如何使用主文件表数据读取文件属性

在我的项目中,我想列出特定文件路径下的所有文件。对于某些用户权限问题,我正在使用主文件表访问所有文件。

使用这个线程,我可以读取特定文件位置下的所有文件

这个会列出文件名和父FRN,有没有办法也列出文件属性????

我也想展示这些细节。

  1. 创建日期
  2. 修改后的数据
  3. 文件大小

USN_RECORD 包含这些详细信息。 在此处输入图像描述

0 投票
0 回答
1202 浏览

file - 如何计算给定数量文件的 MFT 大小?

我有这个练习要做:

我得到一个空硬盘,扇区大小为 512KB。现在,每个集群将有 2 个扇区,所以

对于 NTFS,我很确定我必须计算 MFT 表的大小。

可悲的是,我找不到任何关于如何做到这一点的资源,或者至少找不到如何计算 MFT 条目的大小。我知道如何用 FAT32 来做,但我不知道 NTFS。

有什么办法可以在这里找到一些建议吗?

0 投票
2 回答
1260 浏览

windows - 更改 NTFS MFT 区域的大小

我正在 MSDN 网站上阅读有关 NTFS 的文章。这是其中的一部分,请注意突出显示的部分:

"您可以将新创建​​的卷的 MFT 区域大小更改为对应于用作 MFT 区域的卷的百分比。MFT 区域大小如下:

默认设置 1 保留大约 12.5% 的音量。

设置 2 保留大约 25%。

设置 3 储备约 37.5%。

设置 4 保留大约 50%。

在大多数计算机中,默认设置 1 就足够了。默认设置适用于平均文件大小为 8 KB 的卷。存储大量较小的文件可能需要为新卷增加 MFT 区域的大小。 增加 MFT 区域的大小后,NTFS 不会立即分配空间以适应新 MFT 区域的大小。相反,NTFS在增加 MFT 区域的大小之前会耗尽原始保留空间”

这是否意味着我以后只能为新卷更改 MFT 区?那么,这里的“原始保留空间”是 12,5%?这意味着即使是具有 50% MFT 区域的新卷,也必须耗尽 12.5% 才能分配其余部分?非常感谢!

*文章:https ://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx

0 投票
1 回答
1497 浏览

windows - 如何在 C++ 中查找文件的 MFT 记录号?

在 linux 中有一个fstat系统调用,它给出了inodea 的编号filedescriptor

是否有任何系统调用或winapi函数可以MFT Record Number从其HANDLE或文件路径中给出给定文件?

如果没有任何函数或系统调用,那么我应该如何访问其中MFT Record的文件MFT Table

0 投票
2 回答
711 浏览

windows - 在 NTFS 中的目录上的 CreateFile 在 ReadFile 上失败

假设可以实际打开和读取 NTFS 卷上的目录。但是,我尝试这个的代码不起作用,所以我尝试了谷歌,它找到了我this

关键的观察似乎是您必须使用 FILE_FLAG_BACKUP_SEMANTICS。所以,减少它,我基本上得到:

看起来很直截了当。不幸的是,它不起作用。

CreateFile和两者GetFileSize都有效(句柄不是 INVALID_HANDLE_VALUE,非零且合理的文件大小),但ReadFile返回 FALSE,dwBytesRead 为零,GetLastError 返回 1(“函数不正确”)。嗯。

当我输入这个问题时,“类似问题”提示向我显示了这个。关于使用AdjustTokenPrivileges的业务很有意义。然而,它没有帮助。在该示例中添加 ReadFile(并使用 c:\temp)会产生相同的行为。仔细阅读CreateFile 文档表明,即使没有 SE_BACKUP_NAME 权限,由于管理员权限,我也应该能够打开文件。

我尝试了许多排列:

  • 指定目录名称的不同方式(c:\tempc:\temp\\\.\c:\temp\\?\c:\temp\等)。
  • 不同的目录
  • 不同的驱动器
  • 不同的共享选项(0、FILE_SHARE_READ、FILE_SHARE_READ | FILE_SHARE_WRITE)
  • 不同的访问权限(GENERIC_READ, FILE_LIST_DIRECTORY, FILE_LIST_DIRECTORY + FILE_READ_EA + FILE_READ_ATTRIBUTES, FILE_LIST_DIRECTORY + FILE_READ_EA + FILE_READ_ATTRIBUTES + FILE_TRAVERSE
  • 除了 FILE_FLAG_BACKUP_SEMANTICS (我认为这是必需的)之外,我看不到任何可能适用的标志,但我尝试了 FILE_FLAG_NO_BUFFERING 和 4096 字节对齐的缓冲区。没有。

我(目前)正在尝试 152 种排列,但没有一个 ReadFiles 正在工作。我错过了什么?

我最初的假设是不正确的吗?真的不可能从目录中“读取”吗?还是我仍然缺少一些技巧?

我还应该提到什么?

  • 我以管理员身份运行,并且可以在卷上执行 CreateFile。
  • 我的程序是 64 位的,专为 unicode 构建的。
  • 视窗 7 x64
  • NTFS 3.1 卷
  • 外面多云(嘿,你永远不知道什么是重要的......)