Мне нужен простой и легкий способ чтения NTFS MFT на сервере Windows, используя только C. Моя цель — вернуть набор каталогов и их разрешений программным способом для приложения, которое создает моя компания.
Каждый другой ответ, который я исследовал на StackOverflow и других местах, связан с использованием C++ или других языков и, как правило, очень раздут. Я почти уверен, что то, что я хочу, можно сделать всего несколькими строками кода, используя Windows API для вызова CreateFile (для получения дескриптора корневого тома) и DeviceIoControl (для чтения MFT). Но я не могу найти простое решение C для этого.
Обратите внимание: хотя я уже много лет работаю разработчиком на C#/.NET (а также знаю другие языки, включая Java и Python), я новичок в низкоуровневом программировании на C и вызовах Windows API. Я также понимаю, что есть бесплатная версия Mft2Csv, которая делает именно это. Но фактический исходный код недоступен для реинжиниринга (на GitHub есть только исполняемые и вспомогательные файлы).
Я также понимаю, что могу просто проанализировать дерево каталогов, используя C# пространства имен .NET System.IO и System.Security.AccessControl. Но это слишком медленно для моих целей.