以前の記事でリソースモニターを使った「別のプログラムがこのフォルダーまたはファイルを開いているので、操作を完了できません」と表示されたときの対処法を紹介した。リソースモニターは「resmon.exe」で直接起動できるが、それでも煩雑に発生すると面倒に感じてしまう。そこで今回は「Windows Sysinternals」を使った対処方法を紹介する。

  • よく見かけるこの表示は、何らかの別のアプリケーションもしくはプロセスが、操作したいファイルやフォルダーを開いているため操作できない、というエラーメッセージだ

「Process Explorer」で確認する

1つは、プロセスの状態確認や強制終了などが可能なMicrosoftのソフト「Process Explorer」の検索機能を使う方法。下記に示した手順はメニュー操作を行っているが、「Ctrl」+「F」キーで検索ダイアログを呼び出してもよいだろう。

  • メッセージダイアログのファイル名やフォルダー名をメモする

  • Process Explorerで上部メニュー→「Find」→「Find Handle or DLL」と順にクリック/タップし、テキストボックスにメモした内容を入力して「Search」ボタンをクリック/タップする。検索結果をダブルクリックすると、使用中のプロセスが確認できた

なお、Process Explorerの下側エリアの表示は「Ctrl」+「L」キーで表示・非表示を切り替えられる。検索後も表示されたままになるため、不要な場合は同ショートカットキーで消すとよい。

「Handle」で確認する

コマンドライン派にお薦めしたいのが、同じWindows Sysinternalsに含まれる「Handle」だ。

今回は全種類のハンドル情報をダンプするオプション「-a」と、所有ユーザー名を表示するオプション「-u」を追加した。また、ファイル/フォルダー名はダブルコーテーションで囲う必要はないもの、Windows 10は空白を含めるファイル/フォルダー名が多いため、ダブルコーテーションで囲う習慣を付けるとよい。

  • コマンドプロンプトもしくはWindows PowerShellを起動し、「handle -a -u "{メモしたファイル名やフォルダー名}"」と入力して「Enter」キーを押す

  • 「SystemPropertiesComputerName.exe」もしくは「sysdm.cpl」で「システムのプロパティ」を起動し、「詳細設定」タブの「環境変数」ボタン→ユーザー環境変数の「Path」を選択して「編集」ボタンをクリック/タップする

筆者はWindows Sysinternalsを展開したフォルダーにパスを通しているため、そのままコマンドを実行している。本操作の使用頻度が高い場合は、ユーザー環境変数「Path」の編集をお薦めしたい。