shin'nosuke さんのアレグロモデラート

アレグロモデラート(Allegro moderato)は、速さを示す演奏記号で「穏やかに速く」

現在のプログラムのアンインストールまたは変更が完了するまで、待てない

wait_for_uninstalling_process

Windows 7 で、コントロールパネルのプログラムと機能から、プログラムをアンインストールしようとしたとき、「現在のプログラムのアンインストールまたは変更が完了するまでお待ちください。」というメッセージが表示され、プログラムが削除できないときがある。
ながさわさんは、あるプログラムを削除しようとしたときに、Avast (ウィルス対策ソフト)が、警告を出したときに、プログラムのアンインストールが終わらずに、Windows を再起動するまで、他のプログラムが消せない、ということになってしまう。

うーん。これはいけない、ということで、どのプロセスが邪魔をしているのかを調べてみることにした。

Windows には UNIX の ps と kill に相当するコマンドがあるので、確かめてみる。
C:\Windows\system32>tasklist
epuninst.exe 12916 Console 1 3,120 K
epuninst.bin 11596 Console 1 80 K
どうやらこれらしいので、
C:\Windows\system32>taskkill /im epuninst.exe /f /T
成功: PID 11596 のプロセス (PID 12916 の子プロセス) を終了しました。
成功: PID 12916 のプロセス (PID 13188 の子プロセス) を終了しました。
C:\Windows\system32>taskkill /im epuninst.bin /f /T
成功: PID 11596 のプロセス (PID 12916 の子プロセス) を終了しました。
で、ご退場いただいたつもりなのだが、…うーん、消えない。
tasklist コマンドに親プロセスを表示するオプションがあるかと思って、調べてみても、そんなものはない。

しかたがないので、Google 先生に "windows 親タスク id" で教えてもらうと、こんなものが。

process_explorer

これで調べると、epuninst.bin や epuninst.exe は svchost が親プロセスだった。この pid のタスクを削除すれば、めでたくメッセージは出なくなりました。

めでたし、めでたし。

ごきげんよう。