问题标签 [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.
windows - Windows 文件夹名称到 excel 输出文件
我有一个基本共享文件夹,其中包含 ssis 包所在的数千个子文件夹。有没有一种简单的方法来创建带有子文件夹名称的 excel 或文本文件?
可以以某种方式从窗口查询这些信息吗?
理想情况下,我想通过通配符过滤器过滤输出。类似于列出名称以 LWD_INT 开头的所有文件夹...
java - 是否可以从用户模式 java 应用程序中查询特权 Windows 服务?
背景
我正在开发一个应用程序,我需要使用 java 查询我的硬盘上的所有可用文件。由于性能是一项主要要求,我编写了一个本机应用程序,它可以访问Master File Table ($MBT)
所有有效文件条目的窗口。
我打算将本机修改为 Windows 服务(以管理员权限运行.. 访问 MFT 所需),然后使用我的用户模式 java 应用程序通过一些 IPC 技术(特别是共享内存或命名管道或套接字...需要评估)。
目标应用程序是特定于 windows的,java 用于文本处理(我知道 python/perl 擅长它,但很长时间没有使用它们)。
问题
现在我的问题是——
- 是否可以从受限用户级应用程序查询特权 Windows 服务?
- 如果不是,那么实现这一目标的解决方法是什么?
- 我认为套接字可能是可能的 IPC 机制,因为其他两个会失败
Access Denied
。我的假设是否正确? - 将本机代码转换为 JNI/DLL,然后使用对我的计划是否正确?但在这种情况下,我必须通过自定义清单文件以管理员权限启动我的 java 应用程序。
平台
- Windows 7 企业版
- Visual Studio 2012(用于本机 $MFT 访问)
- JDK 构建 1.7.0_25-b17
谢谢
c# - Get file info from NTFS-MFT reference number
In my C# application, I already have a way to examine the file system but I would like to take advantage of reading from the Master File Table (MFT) because it is so much faster. I understand that 1) it is a proprietary specification and therefore subject to change without notice, and 2) it is only accessible when the application is running under administrative privileges.
I managed to read the Master File Table via this code. From the MFT query, I get a file name and a so-called file reference number. What I can't find is how to transition to a .NET FileInfo object, or even to a Windows API file handle, so that I can get more information about the files/folders in question, like: file size, full path, date stamps, etc.
ntfs-mft - 备用数据流名称的 MFT 信息
我一直致力于从 MFT 检索文件信息。我看到 MFT 记录包含有关标准信息、文件名、数据和其他一些属性的信息。我尝试解析 MFT 记录以获取它包含的所有详细信息。我能够获得所有文件的文件名、数据(包括备用流的数据),但我无法获得命名备用数据流的文件名。出于测试目的,我创建了一个文件,其中包含两个命名的备用流,其中包含数据。当我解析与文件对应的 MFT 记录时,我无法识别备用流名称。这是否意味着备用流名称未存储在 MFT 中?那么某些实用程序(例如 stream.exe)如何识别备用流名称?
c++ - 如何使用 C 读取 NTFS 文件系统的元文件
谁能告诉我如何直接访问元文件($MFT、$Volume、$Bitmap...)?我需要从这些文件中获取信息。
ntfs - 如何解释 NTFS MFT 的 FILENAME 属性?
我已阅读 NTFS MFT。这是图片(4字节字,低地址显示在左边)
突出显示的区域是文件名属性。以下是属性格式。
如您所见,dwType 是 0x00000030 (FILENAME) , dwFullLength 是 0x00000068。wNameOffset 为 0x0018,wID 为 0x0003。这是一个常驻案例,驻留有 dwLength 0x0000004a、wAttrOffset 0x0018、uchIndexedTag 0x01 和 uchPadding 0x00。因为偏移量是从属性记录开始的 0x18。如下所示。
我不知道如何阅读这个 unicode 字符串。是 utf-16 吗?每个字符都是 16 位的?
c++ - 为什么在 VB.NET 中使用 DeviceIoControl 进行文件枚举比在 C++ 中更快?
我正在尝试读取 Windows 主文件表 (MFT) 以快速枚举文件。到目前为止,我已经看到了两种方法来做到这一点:
- 正如Jeffrey Cooperstein 和 Jeffrey Richter使用DeviceIoControl所建议的那样
- 一些开源工具和An NTFS Parser Lib中提供的直接解析 MFT
对于我的项目,我专注于方法 [ 1 ]。我面临的问题主要与执行时间有关。为了清楚起见,以下是我的系统和开发环境:
- IDE-Visual Studio 2013
- 语言 - C++
- 操作系统 - Windows 7 专业版 x64
- 为 C++ 和 .NET 代码生成 32 位二进制文件。
问题
我已将 [ 1 ]中提到的版本(稍作修改)与codeplex 上可用的 VB.NET 实现进行了比较。问题是如果我取消注释内部循环中的语句, C++ 代码执行时间会增加 7-8 倍。我还没有在 C++ 代码中实现路径匹配(在 VB 代码中可用)。
Q1。请建议如何提高 C++ 代码的性能。
在我的机器上枚举 C:\ 驱动器的时间:
- C++(在内循环中带有未注释的语句) -
21 seconds
- VB.NET(带有额外的路径匹配代码) -
3.5 seconds
为了更清楚,下面是 C++ 和 VB.NET 片段。
C++
其中m_nodes
定义为typedef std::map<DWORDLONG, CNode*> NodeMap;
VB.NET
其中fFileFound
定义如下:
其中FSNode
&CNode
具有以下结构:
注意- VB.NET 代码生成一个新线程(因为它有 GUI,所以需要),而我在主线程中调用 c++ 函数(用于测试的简单控制台应用程序)。
更新
从我这边看,这是一个愚蠢的错误。DeviceIoControl
API 正在按预期工作。虽然Debug
构建比Release
构建慢一点。请参考以下文章:
c++ - 如何使用 C++ 读取 ntfs 主文件表
我想枚举磁盘上的所有文件。我正在使用 WinAPI FindFirst/FindNext 进行枚举。但是这种方法需要很多时间。我读到某个地方,我们可以通过读取 ntfs 主文件表来快速枚举,该表包含有关磁盘上每个文件的所有信息。c++ 中是否有任何 API 或某种方法可以读取 ntfs 主表?
python - 如何从 MFT 中提取文件大小
我正在尝试提取主文件表 (MFT) 的内容。我已经从我的 NTFS 卷中复制了 MFT 并将其保存为 .bin 文件。现在我正在尝试使用unpack
Python 中提供的函数来读取这个文件。我正在读取为存储在文件记录的文件名属性中的实际文件大小分配的 8 位,如下所示
我面临的问题是我得到的文件大小是 3.5e-323。MFT 以字节为单位保存文件大小,但我得到的答案似乎很荒谬。那么有什么办法可以纠正吗?
filesystems - NTFS文件系统的MFT在哪里
我想知道我发现的所有地方是否都FF FF FF FF
表明那里有一个 MFT 块。因为他们在这里说:
您可以非常清楚地看到文件标记的 0xFFFFFFFF 结尾,它标志着新 MFT 条目的结束(字节偏移量 504)。