web-dev-qa-db-ja.com

「fsutilusnreadjournalC:」出力の読み方

fsutilと呼ばれるMicrosoftWindowsコマンドラインで実行できるユーティリティがあります。受け入れるコマンドの1つは、他のいくつかの引数とともに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
2
Noctis Skytower

その出力は USN_RECORD_V3 データ構造に対応します。 ID行に関しては、NTFSボリューム上のすべてのオブジェクトに数値IDがあります。 「ファイルID」行には、その更新の影響を受けるファイルのIDが表示されます。 「親ファイルID」は、それを含むディレクトリのIDです。

ファイルへのパスを取得するには、このユーティリティの別のモードfsutil file queryFileNameByIdを使用できます。ボリュームパスとファイルID(0xが付加されたもの)を取り、フルパスを返します。 NTFSでは同じファイルに異なるパスを与えるハードリンクが許可されているため、「the」パスではなく「a」パスと言います。その場合に返される正確なパスは任意です。ただし、大多数のファイルには1つのリンク/パスしかありません。

例を見てみましょう。私はこの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

ファイルIDを使用して、ファイルへのパスを見つけましょう。

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レコードの場合、ファイルはおそらく現在削除されているため、親IDを使用してファイルの場所を見つける必要があります。ファイルの親IDでクエリを実行すると...

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
2
Ben N