Saturday, April 29, 2017

The action can't be completed because the file is open in DHCP Client

最近参加したプロジェクトではOSにWindowsサーバを用いていたが、
モジュールをリリースしようとすると時々失敗する。

ファイルの削除に失敗している様なので、
手動でファイルを削除するとタイトルのメッセージが表示される。
(環境は英語)

何が起こっているかというとsvchost.exeというプロセスが
このファイルを掴んで放してくれないらしい。

svchost.exeなのにどうしてDHCPクライアントなのかというと
このsvchost.exeはサービスから呼び出されて起動しているので、
その呼び出し元のサービスの一覧から一番最初の名称を取得して
エラーメッセージに出力しているのです。

コマンドプロンプトを開いて下記のコマンドを実行してみましょう。

tasklist /svc /fi "imagename eq svchost.exe"

実行中のsvchost.exeが呼出元のサービスと一緒に一覧になって表示されます。

タスクマネージャからプロセスのタブを開き、列にPIDを追加して
コマンドでDHCPの付いていたPIDのsvchost.exeプロセスを停止すると
それまで削除できなかったファイルが削除できる。