今日、急に Windows 10 Pro で音が出なくなった。
とりあえず、コマンドプロンプトから
C:\>net stop "Windows Audio"C:\>net start "Windows Audio"C:\>net stop AudioEndpointBuilderC:\>net start AudioEndpointBuilder
てな具合にオーディオ関係のサービスを再起動したらしばらくは調子よかったんだけど、また音が出なくなった。
C:\>net start "Windows Audio"システム エラー 1068 が発生しました。依存関係サービスまたはグループを起動できませんでした。
という具合に起動もできない。
調べてみると、AudioEndpointBuilder が「停止処理中」のまま固まっていた。
こうなると、タスクマネージャーからも殺せないし、サービスの再起動もできない(停止処理中だから起動ボタンとかも無効化されている)。
コマンドプロンプトから強制的に殺してみる。プロセスIDを調べて、taskkill コマンドで強制停止。
C:\>sc queryex AudioEndpointBuilderSERVICE_NAME: AudioEndpointBuilderTYPE : 30 WIN32STATE : 3 STOP_PENDING(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE : 0 (0x0)SERVICE_EXIT_CODE : 0 (0x0)CHECKPOINT : 0x160WAIT_HINT : 0x1388PID : 7312FLAGS :C:\>taskkill /pid 7312 /fエラー: PID 7312 のプロセスを強制終了できませんでした。理由: 実行中のタスクのインスタンスがありません。
ありゃあ・・・いわゆる「ゾンビプロセス」になってるんか?
UNIX や Linux ではゾンビ化したプロセスも殺せる(消せる)が、Windows は駄目なんかな?
WMIC コマンドを使ってみる。
C:\>WMIC PROCESS WHERE "ProcessId = 7312" GET Name,ProcessId,CommandLine /FORMAT:LISTCommandLine=C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted -p -s AudioEndpointBuilderName=svchost.exeProcessId=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 って・・・