ファイルが削除できなくて困っている。正確には、エクスプローラーから完全に削除(Shift+Del)したファイルがエクスプローラーの表示内容を更新すると即復活し、なおかつ復活したファイルにはアクセスが拒否される。これ、なんだろうね。で、色々調べてそれっぽいのを見つけた。
消えないファイルの話 – JAPAN Platform SDK(Windows SDK) Support Team Blog

Delete Pending という状態


ファイルの削除が保留されている状態と書いてきましたが、Delete Pending とちょっと短く表現します。Delete Pending の状態の特徴を書いてみます。
•そのファイルをオープンしようとすると Access 拒否が発生する。
•FindFirstFile()ではファイルは見つかる。
•そのファイルを削除するとフォルダの削除ができない。

一旦 Delete Pendingになると、あとはファイルが閉じれらてクローズされるのみです。この時点で削除されることが確定しているので、そのファイルを新たに開く(オープン)ことはできません。オープンしようとすると、アクセス拒否というエラーで失敗します。

実は、Delete Pending になっている状態のファイルを再度 Del コマンドで削除しようとすると今度は アクセス拒否 で失敗します。このときの厳密なエラーコードを参照すると STATUS_DELETE_PENDINGになります。process explorerで見てみるとその内容がわかりますね。

一方で、Dir コマンドなどそのフォルダのディレクトリエントリの情報を参照するとまだ存在していることになります。(保留状態なので、まだ見えるということですね)さらに、Delete Pending のファイルが存在しているフォルダを削除しようとしても、まだ保留の状態なので、ファイルが存在するということになります。このため、ファイルの削除が成功したけれども、そのフォルダが削除できないとう場合も発生します。

これかな。ZoneID絡みの気がしないでもないけど、どうもそれっぽくないからな。