Как бы я прочитал таблицу основных файлов NTFS в C (* не * C ++)? - PullRequest
0 голосов
/ 08 января 2019

Мне нужен простой и легкий способ чтения 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. Но это слишком медленно для моих целей.

...