Как читать вывод "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