今日、急に Windows 10 Pro で音が出なくなった。
とりあえず、コマンドプロンプトから
C:\>net stop "Windows Audio"
C:\>net start "Windows Audio"
C:\>net stop AudioEndpointBuilder
C:\>net start AudioEndpointBuilder
てな具合にオーディオ関係のサービスを再起動したらしばらくは調子よかったんだけど、また音が出なくなった。
C:\>net start "Windows Audio"
システム エラー 1068 が発生しました。
依存関係サービスまたはグループを起動できませんでした。
という具合に起動もできない。
調べてみると、AudioEndpointBuilder が「停止処理中」のまま固まっていた。
こうなると、タスクマネージャーからも殺せないし、サービスの再起動もできない(停止処理中だから起動ボタンとかも無効化されている)。
コマンドプロンプトから強制的に殺してみる。プロセスIDを調べて、taskkill コマンドで強制停止。
C:\>sc queryex AudioEndpointBuilder
SERVICE_NAME: AudioEndpointBuilder
TYPE : 30 WIN32
STATE : 3 STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x160
WAIT_HINT : 0x1388
PID : 7312
FLAGS :
C:\>taskkill /pid 7312 /f
エラー: PID 7312 のプロセスを強制終了できませんでした。
理由: 実行中のタスクのインスタンスがありません。
ありゃあ・・・いわゆる「ゾンビプロセス」になってるんか?
UNIX や Linux ではゾンビ化したプロセスも殺せる(消せる)が、Windows は駄目なんかな?
WMIC コマンドを使ってみる。
C:\>WMIC PROCESS WHERE "ProcessId = 7312" GET Name,ProcessId,CommandLine /FORMAT:LIST
CommandLine=C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted -p -s AudioEndpointBuilder
Name=svchost.exe
ProcessId=7312
なるほど。ちゃんとまだ 7312 プロセスは認識されてるな。まあ、ゾンビだからな。早速、プロセスの削除。
C:\>WMIC PROCESS WHERE "ProcessId = 7312" DELETE
インスタンス \\DESKTOP-5077EPO\ROOT\CIMV2:Win32_Process.Handle="7312" を削除しています
エラー:
説明 = アクセスは拒否されました
駄目だこりゃ。
もう、こうなると再起動しかないということか。Windows 格好悪いなあ。
時々、技術者の中でも「UNIX 系 OS より Microsoft Windows が好きだ!Windows は優れた OS だ!」という奇特な意見を聞くことがあるが、ゾンビ化したプロセスを消せない OS って・・・