问题标签 [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.
ntfs-mft - 如何通过读取 $MFT 文件记录来提取任何文件的大小?
我需要通过读取该特定文件的 MFT 记录来获取文件大小。请告诉我在哪里可以找到文件大小和文件在磁盘上的位置的偏移量。
file - NTFS $MFT 文件可以有子记录吗?
我正在编写一些代码来解析 NTFS 卷中磁盘上的 MFT。这很简单,但是一个特殊的极端案例引起了我的注意,我在互联网上的任何地方都找不到明确的答案。
对于 NTFS 中的普通文件,如果文件的属性多于单个记录(例如,如果文件有许多硬链接,则有许多 $FILE_NAME 属性,或者许多$DATA 属性,如果它有许多备用数据流)。
参考号 0 处的 $MFT 文件保存 MFT 本身的数据运行。通常它是一个没有孩子的单一记录。$MFT 文件是否有可能有子记录?如果可能的话,你怎么知道在哪里可以找到它们?这些子记录是否必须以非常低的参考编号存储,以便您可以可靠地获取它们,而不必已经解析 $MFT 以知道它们在磁盘上的位置?
windows - 不完整的 chkdsk 日志文件
长话短说:我克隆了一个损坏的 ntfs 硬盘(损坏的 $MFT 根条目)并启动到我的本机 Windows 以执行 chkdsk 运行。
在启动窗口执行不需要的 chkdsk 运行。chkdsk 运行非常成功。不幸的是,chkdsk 日志似乎不完整。
我从事件查看器中读取了事件 id 为 1001 的日志,并使用以下命令直接在 power shell 中:
因此,我无法声明 chkdsk 运行可以(不)恢复哪些集群以及多少集群。日志由 274 行组成,似乎在过程中被破坏了。
问题: 是否有可以管理日志的其他资源?在 274 行之后日志可能会被破坏是否有原因?
c++ - 如何获取 USN 期刊查询的完整路径?
我正在尝试通过 MSDN 上的示例(https://msdn.microsoft.com/en-us/library/windows/desktop/aa365736%28v=vs.85%29.aspx)了解如何查询 USN 日志为了跟踪 NTFS 驱动器上的文件更改。示例代码运行良好。
然而,在这个示例代码中,USN_RECORD 结构只返回一个文件参考号和文件名。它不会返回文件的完整路径。有谁知道如何查询 USN 日志以返回完整路径?或者有一种方法可以从文件参考号中获取完整路径?
谢谢。
ntfs - 在运行时从 MFT 读取文件内容
我必须读取正在运行的 Windows(XP 或更高版本)的 MFT 文件,并通过它到达保存机器上特定文件内容($DATA)的 HD 扇区。
问题在于,在读取 MFT 直到获取相关扇区并读取它们之间,文件系统结构可能会发生变化,并且位置可能不再相关。
有没有办法将系统“冻结”一段时间?也许可以保证这个文件不会有变化?锁定特定文件以使其不在扇区之间移动?(包括由于优化和间接变化)
当然,我不希望复制整个硬盘并静态工作,因为这是一个缓慢的操作,此时将不允许正常使用系统。不用说,我不想使用操作系统的API函数或编写驱动程序。
c# - 如何使用主文件表数据读取文件属性
在我的项目中,我想列出特定文件路径下的所有文件。对于某些用户权限问题,我正在使用主文件表访问所有文件。
使用这个线程,我可以读取特定文件位置下的所有文件
这个会列出文件名和父FRN,有没有办法也列出文件属性????
我也想展示这些细节。
- 创建日期
- 修改后的数据
- 文件大小
file - 如何计算给定数量文件的 MFT 大小?
我有这个练习要做:
我得到一个空硬盘,扇区大小为 512KB。现在,每个集群将有 2 个扇区,所以
对于 NTFS,我很确定我必须计算 MFT 表的大小。
可悲的是,我找不到任何关于如何做到这一点的资源,或者至少找不到如何计算 MFT 条目的大小。我知道如何用 FAT32 来做,但我不知道 NTFS。
有什么办法可以在这里找到一些建议吗?
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
windows - 如何在 C++ 中查找文件的 MFT 记录号?
在 linux 中有一个fstat
系统调用,它给出了inode
a 的编号filedescriptor
。
是否有任何系统调用或winapi
函数可以MFT Record Number
从其HANDLE
或文件路径中给出给定文件?
如果没有任何函数或系统调用,那么我应该如何访问其中MFT Record
的文件MFT Table
?
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:\temp
、c:\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 卷
- 外面多云(嘿,你永远不知道什么是重要的......)