2

Существует утилита, которая может быть запущена в командной строке 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 ответ1

2

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

Чтобы получить путь к файлу, вы можете использовать другой режим этой утилиты: fsutil file queryFileNameById . Он принимает путь к тому и идентификатор файла (с добавлением 0x ) и возвращает полный путь. Я говорю "путь", а не "путь", потому что 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .