ロックされたファイルの対処方法

Windowsだとファイルやフォルダを削除したり、移動したり、リムーバブルメディアを抜こうとした時に


xxxxを削除できません。アクセスできません。
ディスクがいっぱいでないか、書き込み禁止になっていないか、またはファイルが使用中でないか確認してください。
とか

xxxxを削除できません。ほかの人またはプログラムによって使用されています。
ファイルを使用している可能性があるプログラムをすべて閉じてから、やり直してください。
とかメッセージがたまに出たりして困ることがある。
本当にオープン中だったらまだわかるんだけど時々誰も使ってないのにこのエラーが出ると本当にいらいらする。


よく見かける対策としてはUnlockerなんだけど、インストールしなくちゃいけないのが気に食わない。シェル拡張でコンテキストメニューにも食い込んでくるし。
そこでインストール不要でファイルのロック状態の確認/強制解除をする方法を調べてみた。
中級者〜上級者向けなのでハンドルって何?っていう初心者にはお勧めしない。


Handle
はい。やっぱりかゆいところに手の届くSysinternals登場。


ファイルやフォルダを指定してオープンしているプロセスを特定することができる。検索するにはオプションでファイル名やフォルダ名を指定するだけ。


D:\>handle D:\tmp\img

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

explorer.exe pid: 592 F88: D:\tmp\img

この場合、explorer.exeが掴んだままになってるのでハンドルを強制的にクローズすればいい。
オプション -c が強制クローズ。-c でファイルハンドル(上の例でF88)、-p でプロセスID(上の例で592)を指定する。

D:\>handle -c F88 -p 592

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

F88: File (RWD) D:\tmp\img
Close handle F88 in explorer.exe (PID 592)? (y/n) y

Handle closed.

確認のため y を入力すれば完了。(オプション -y で確認を省略可能だけどお勧めはしない)
explorerは「縮小表示」にした時とかたまにファイルを掴みっぱなしになる時がある。
検索は前方一致なので、リムーバブルメディアもドライブ名で検索すればドライブ名以下ロックされているすべてのフォルダ/ファイルが検索対象になるので、何がロックの原因かを特定して、解除できる。まあ、大抵はexplorerだったりするんだが…。


なおハンドルの意味がわかってる人なら、強制クローズしたらどういうことになるのかはご想像の通り。自己責任で。