2011-07-13 8 views
1

ファイルと、関連するすべての属性(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 +ツリーなどを管理していました。

答えて

3

MFTレコードが削除されましたか?その場合は、ファイルが再表示されないためです。

(VCNから実際のCNとセクタ番号まで)MFTレコードの位置計算を確認してください。 また、$ MFTMirrorがあります。$ MFTMirrorにMFTレコードの重複したコピーが存在するかどうかを確認する必要があります。もしそうであれば、そのレコードも消去してください。

ファイルのMFTレコードロケータ(おそらくそれは問題であった可能性があります)のコードを共有することができれば、もっとお手伝いできます。

関連する問題