Windows で別のプロセスが使用中ですファイルを消す方法

Template::ToolKit のファイルキャッシュの拡張子って .ttc を使うことが多いわけですが、この拡張子、実は Windows 上では True Type コレクションっていう特別な意味を持つ拡張子に割り当てられています。特別な意味っつーのは、True Type Font をまとめて1つにしたファイルのこと(多分・・・)を指すって意味なのですが、間違ってダブルクリックでもしようものならそのファイルを Font ファイルを勘違いしてインストールしようとし始めます。

当然 Font ファイルではないのでインストールは失敗するのですが、一度でもインストールを試みると消せないファイルの化けてしまいます。懸想としてもこんなエラーがでます。

img01.jpg

「別のプロセスがこのファイルを開いているので、操作を完了できません」

なんて訳のわからないことをほざきます。システムの復元とかレジストリを調査したりとか随分と無駄なことをやってしまいましたが、最終的に何とか削除する方法を見つけたので情報共有です。この方法ならいろいろ強引にファイルを消すことができそうです。以前、Windows で消えないファイルを消す方法で公開した方法よりも遙かに強力かと思われます。

- スポンサーリンク -

NyaRuRuの日記 - ファイルを開いているプロセスを調べるを大いに参考にさせて頂きました。


別のプロセスがこのファイルを開いているので、操作を完了できませんの解決方法

  1. Process Explorer for Windows なるツールをダウンロードします。このツールを使うことでどのプロセスが何を使用中であるか全て閲覧することができます。またそのプロセスが開いているファイルハンドルを強制的に閉じたりプロセスそのものを殺すこともできます。イメージ的には Linux の root ユーザにやっとなれた感触です。

    img05.jpg

  2. Process Explorer を起動して、メニューから Find → Find Handle or DLL を選択します。検索ダイアログが表示されたら、使用中と表示されるファイル名またはフォルダ名を入力して検索をすれば、問題の原因であるプロセスの一覧が表示されます。

    img06.jpg

  3. Type = Handle となっているもの、つまり問題のあるファイルハンドルをダブルクリックするとこんな画面になります。右クリックでファイルハンドルを閉じることが来ます。

    img07.jpg

  4. 同様ので順で、Type = DLL となっているところをダブルクリックしたのちに delete ボタンを押すとそのプロセスが死にます。これで問題のあるプロセスをどんどん殺していって、最終的に一覧が空っぽになるようにします。

    img08.jpg

  5. ここまでくると、多分 エクスプローラも死んでるはずなので Ctrl + Alt + delete でタスクマネージャを開いて、新しいタスクから cmd と打ち込んで DOS プロンプトでも起ち上げます。そこから所定の場所へ移動してファイルを削除すれば綺麗さっぱり消えてくれます。

    img09.jpg


というわけで Process Explorer for Windows かなり強力です。これで今まで Windows に root ユーザに相当する権限が欲しいと思っていたことに近いメンテナンスが可能になるのかも??と今思っていたりします。


おっと、書き忘れてました。Template::ToolKit のキャッシュの拡張子を .ttc から他のに変更しよっと。

- スポンサーリンク -