seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

長いパスにできたファイルの削除

WinRARでフォルダの上に圧縮解除したら、やたら長いパスが構築された。
これを削除しようと思ったら、削除できない。

  • エクスプローラの右クリックでプロパティを見ようとしてもアクセスできない。
  • DOSプロンプトから削除しようとしてもできない。
  • Explorerを落としたり、マシンを再起動しても削除できない
  • スキャンディスクかけても削除できない。

…しかたないので、C++

DeleteFile( "\\\\?\\X:\\xxxx\\xxxx......." );

としてみたが、やはりできない。
よくよくMSDNを読むと、Unicodeバージョンならば、という記述があるため、

DeleteFileW( L"\\\\?\\X:\\xxxx\\xxxx......." );

に変更して試したところ、ようやく消える。

WinRARは、おそらくUnicodeバージョンを使ってファイルを展開しているのだろうな、などと想像。しかし、エクスプローラが、これを使っていないというのが非常に意外だった。