マイクロソフトのツール DISKEDIT.EXE は、生のディスクデータを直接読み書きするための低レベルのツールです。このファイルのディレクトリエントリを含むクラスタをロードして、問題のある ‘?’ 文字を無害なものに変更してディスクに書き戻すことができるはずです。
私の理解では、Microsoft の diskedit ツール (同名の Norton Utilities ツールではなく、FAT ボリューム専用のツール) は Windows 2000 SP4 で最後に見られたものだと思います。しかし、このツールへのリンクは ここ .
正しいクラスタを見つけるには、 DiskExplorer for NTFS .
この悪いファイルが入っているドライブを開くには、File->Drive…から始めます。Goto->Root Directoryを選択して、ディレクトリビューを取得します。MFT#のリンクを使って、バッドファイルのあるディレクトリに移動します。そこに着くと、ウィンドウの上部に「MFT# x12345 DIR: ‘dirname’, …blah blah blah blah… starting at cluster x9302AE , … blah blah blah blah"
さて、Microsoftのdiskeditに移動します。まず、File->Open…を実行し、ボリューム名C:を指定します。ボリュームファイル名は空白のままにしておきます。その起動クラスタ番号を取って、DisceditのRead->NTFS Clusters…->Starting Cluster (16進数で入力してください)に入力します。
さて、矢印キーを使って、悪いファイル名までスクロールしてください。ユニコードなので、"W.h.e.r.e. .H.a.v.e. .A.l.l. .t.h.e. .C.o.w.b.o.y.s. .G.o.n.e. ?…o.g.g.g. “のようなものを探します。カーソルを悪い「3F」の上に置いて、5Fのような安全な文字を入力します(‘_’)。ディスクに書き戻すには、Write-Itを選択してください。
他にも打つべき場所があります(どちらか一方か両方が必要かどうかはわかりません)。さて、DiskExplorerに戻って、不良ファイルのMft#をクリックします。左側にツリー状のものがあり、「構造」と書かれた画面が表示されます。ツリー内の「属性」をクリックします。属性のリストが表示されますが、そのうちの一つは$30 … $FILE_NAMEのようなものになります。つまり、$30はファイル名を持っています。Structuresツリーの$30ノードの下のBodyノードをクリックしてください。メニューView->as Hexを選択してください。数行下に、ファイル名がW.h.e.r.e. .H.a.v.e…などと表示されるはずだ。画面の左側には、どのディスク・セクターを見ているかを示すセクター欄があります。
Back over the diskedit. Read->Sectors…を実行して、DiskExplorerからセクタ番号を入力します。先ほどと同じように、下にスクロールして「3F」の文字を上と同じ文字に置き換えます。Write-Write>Itを選択してディスクに書き込んでください。
これだけやったのに、ツールでは文字を変えたと言うが、エクスプローラーではそうはいかない。ディレクトリはどこかにキャッシュされているはず。再起動すると変更が見えるようになる。