MicrosoftのエンジニアであるRaymond Chen氏は7月29日(現地時間)、公式ブログの記事「Why is there a window with no name blocking Windows shutdown? - The Old New Thing」において、Windowsの終了を妨げる名前のないアプリの正体について解説した。
名前のないウィンドウが存在している
Windowsを終了する際、シャットダウンを妨げるソフトウェアが存在すると、WindowsはBlocked Shutdown Resolver(BSDR)と呼ばれるウィンドウ一覧が表示される。この一覧にはウィンドウごとに、ウィンドウアイコン、ウィンドウタイトル、サブタイトルが表示される。
Chen氏によると、このウィンドウアイコンおよびウィンドウタイトルは実際のアプリケーションウィンドウから取得され、サブタイトルはシャットダウン通知を受けたアプリが「ShutdownBlockReasonCreate関数」に渡した文字列から取得されるという。
つまり、名前のないアプリの正体は、ウィンドウタイトルが設定されていないアプリということになる。しかし少なくとも筆者は、Windowsの終了時にウィンドウタイトルのないアプリの存在は確認したことがない。この疑問についてChen氏は次のように述べている。
「プログラムはしばしば、ユーザーに表示するつもりのないウィンドウを作成することがあります。例えば、メッセージを受信したり、他のウィンドウを配置するためのアンカーとして機能したりするヘルパーウィンドウかもしれません。プログラムはそのウィンドウがユーザーに表示されないことを知っているため、タイトルを付ける手間を省くことがあります」
ウィンドウを非表示にするアプリが原因であれば、見かけたことがないのは当然と言える。Chen氏は「プログラマーのみなさんは、ユーザーに表示されないと思っていたウィンドウであっても、わかりやすいタイトルを付けてください」と述べ、不安に感じるユーザーへの配慮を求めている。
なお、よく見かけることのある「このアプリがシャットダウンを妨げています」や「このアプリが再起動を妨げています」といったサブタイトルは、アプリが「ShutdownBlockReasonCreate関数」を呼び出さなかったときに使用されるデフォルト文字列とのことだ。
