Как читать вывод "fsutil usn readjournal C:"

В командной строке Microsoft Windows может быть запущена утилита, которая называется fsutil, Одна из команд, которые он принимает, fsutil usn readjournal <volume pathname> наряду с несколькими другими аргументами. Есть ли документация о том, как читать данные, полученные программой? Мои конкретные интересы заключаются в том, как интерпретировать и использовать File ID а также Parent file ID поля. поскольку File name не включает полный путь, неясно, как определить, может ли файл представлять интерес на основе местоположения.

Пример записи

Usn               : 9149751384
File name         : Preferences~RF101ac0ae.TMP
File name length  : 52
Reason            : 0x80000200: File delete | Close
Time stamp        : 7/12/2018 11:04:30
File attributes   : 0x00000020: Archive
File ID           : 0000000000000000000500000000a67b
Parent file ID    : 0000000000000000000500000003fa3c
Source info       : 0x00000000: *NONE*
Security ID       : 0
Major version     : 3
Minor version     : 0
Record length     : 128

1 ответ

Решение

Этот выход соответствует USN_RECORD_V3 структура данных. Что касается строк идентификаторов, каждый объект на томе NTFS имеет числовой идентификатор. В строке "идентификатор файла" указан идентификатор файла, на который повлияло это обновление; "идентификатор родительского файла" - это идентификатор каталога, в котором он находится.

Чтобы получить путь к файлу, вы можете использовать другой режим этой утилиты: fsutil file queryFileNameById, Требуется путь к тому и идентификатор файла (с 0x prepended) и возвращает полный путь. Я говорю "путь", а не "путь", потому что NTFS допускает жесткие ссылки, которые дают разные пути к одному и тому же файлу. То, какой путь возвращается в этом случае, является произвольным. Тем не менее, подавляющее большинство файлов имеют только одну ссылку / путь.

Давайте сделаем пример. У меня есть эта запись USN:

Usn               : 46966427728
File name         : settings.dat
File name length  : 24
Reason            : 0x80000001: Data overwrite | Close
Time stamp        : 7/11/2018 21:50:57
File attributes   : 0x00000020: Archive
File ID           : 00000000000000000005000000170d13
Parent file ID    : 0000000000000000001200000019ab0e
Source info       : 0x00000000: *NONE*
Security ID       : 0
Major version     : 3
Minor version     : 0
Record length     : 104

Давайте использовать идентификатор файла, чтобы найти путь к файлу:

fsutil file queryFileNameById C:\ 0x00000000000000000005000000170d13

Результат:

A random link name to this file is \\?\C:\Users\Ben\AppData\Local\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\Settings\settings.dat

Похоже, этот файл является своего рода хранилищем настроек для приложения "Фото". В случае вашей записи USN, вероятно, файл сейчас удален, поэтому вам нужно будет использовать родительский идентификатор, чтобы найти его. Если я сделаю запрос по родительскому идентификатору моего файла...

fsutil file queryFileNameById C:\ 0x0000000000000000001200000019ab0e

... я получаю только путь к папке, а не settings.dat файл:

A random link name to this file is \\?\C:\Users\Ben\AppData\Local\Packages\Microsoft.Windows.Photos_8wekyb3d8bbwe\Settings
Другие вопросы по тегам