ファイルと、関連するすべての属性(0x30 $ FILE_NAME、0x80 $ DATA、0x90 $ INDEX_ROOT、および0xA0 $ INDEX_ALLOCATIONを含む)を削除するプログラムを作成しています。など)をWindowsのNTFSボリュームに格納します。NTFSのマスターファイルテーブル(MFT)でファイルレコードを変更できません
これでファイルレコードの位置をファイルに見つけることができました。回復を防ぐためにファイルレコードを何回か上書きしてから、ファイルレコードが持つ基本情報(最初の属性 "0x10 $ STANDARD_INFORMATION"の標準属性ヘッダー)を戻します。
私はWriteFile()~を使用しました。ファイルレコードを書きました。戻り値は関数が成功したことを示します。 その後、ディスクを開いて、WinHexでrawデータを確認します。ファイルレコードが実際にはに変更されています。
しかし、別の2つまたは3つのファイルを削除した後で、前のファイルのファイルレコードは、まったく何もしなかったかのようにのように現れました。
これは、Windowsのファイル管理の回復メカニズムになると思います。私はそれがWindowsを回復することなく正常にファイルレコードを変更する方法があるかと思います。
P.S.ファイルレコードを手動で変更する前に、私はDeleteFile()を使ってB +ツリーなどを管理していました。