このページの本文へ

Windows Info 第488回

Windowsのサウンド設定をコマンドラインで調べる

2025年06月29日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 Windowsでは特定のイベントが発生したとき(たとえばUSBデバイスの接続時のようなとき)にサウンドを鳴らすことができる。その設定は、コントロールパネルの「サウンド」プロパティにある「サウンド」タブからできる。

サウンド設定

通常、Windowsやエクスプローラーなどの動作音の設定は、「サウンドダイアログ」→「サウンドタブ」からする。ここでは、1つ1つサウンドイベントを選択し、再生するサウンドファイルを指定する

 同様に「設定」→「システム」→「サウンド」→「サウンドの詳細設定」でも同じダイアログボックスを開くことが可能だ。

 音を1つ、2つ変える程度ならGUI操作でも問題ないのだが、多数の音を同時に変更したい場合には違う方法も考えたくなる。その便利な方法の1つがコマンドラインを使うというものだ。

 結論から言えば、Windowsのサウンド設定はレジストリに記録されており、これをコマンドで書き換えることで、複数のサウンドイベントに対するサウンドファイルをまとめて指定できる。

Windowsのサウンド設定はそもそもどこにある?

 Windowsのサウンド設定は、以下のレジストリキーにある。

HKEY_CURRENT_USER\AppEvents\Schemes\Apps

 この直下にあるのは、ダイアログの「プログラムイベント」にあるアイコンの付いた項目である。インストールしているアプリケーションによって追加されることがある。

 Windows 11 Ver.24H2では、「Windows」「エクスプローラー(File Explorer)」「Windows音声認識(Speech Recognition)」の3つが標準で登録されている。このほか、Visual Studioが「devenv」としてプログラムイベントを追加することがある。

 現在登録されているプログラムイベント対応プログラムに関しては、以下のコマンドでリストアップできる。

GCI HKCU:\AppEvents\Schemes\Apps|GP|FT PSChildName,'(default)'

サウンド設定

レジストリ内で、サウンドは、アプリ/システム(Windows)ごとに、サウンドイベントの名前と設定値が組になっている。最初のコマンド出力はアプリ/システム名、2つ目のコマンドは、アプリ/システムごとのサウンドイベントになっている

 なお、「GCI」、「GP」、「FT」はPowerShellのエイリアスである。「Get-Alias <エイリアス>」で、元のコマンドを調べられる。

 さらにその下には、各アプリケーションやWindowsが定義したイベント名がある。これは、アプリケーションが音を鳴らしたい条件を示すもの。アプリケーションやWindowsで指定されたイベントが発生すると、サブキー以下に定義されている音声ファイルを再生する。

 このレベルの一覧を見るには、

GCI -Recurse -Depth 1 HKCU:\AppEvents\Schemes\Apps|select PSChildname

とすればよいのだが、項目数が多く、アプリケーション/システム名をはっきりさせるためには、改行を挟んだほうが見やすい。

GCI -Recurse -Depth 1 HKCU:\AppEvents\Schemes\Apps|%{ if($_.PSParentPath -match "Apps$"){Write-Output "`r" };Write-Output $_.PSChildName }

 さらにその下には、4つのキーがあり、ユーザーがサウンド設定に名前を付けて保存するごとに、保存ファイル名のBaseName(ファイル名からパスと拡張子を除いたもの)でキーが作られていく。

 規定の4つのキーとは、

.current:現在の設定値
.defalut:Windows/アプリケーションの既定値/初期値
.Modified:ユーザーが入力した値は一旦、ここと.currentに入る
.None:サウンドダイアログでユーザーが「サウンドなし」を選択した場合の設定値

となっている。なお、.Noneは、すべてのサウンド項目で空欄になっている。

 このレベルには、ユーザーが保存したサウンド設定のファイル名のBaseNameを使ったキーが複数作られる可能性がある。サウンドファイルのパスは、以下のコマンドで表示できる。

GCI -Recurse -Depth 2 HKCU:\AppEvents\Schemes\Apps | gp | ft PSPath,'(default)'

 ただし、少し長いので、

GCI -Recurse -Depth 2 HKCU:\AppEvents\Schemes\Apps|%{if($_.ValueCount -eq 0){"`r$($_.Name)"}else{"$($_.Name)`t$(gpv -Path $_.PSPath -Name '(default)')"}}

として、表示幅を短くする。

サウンド設定

コマンドで、アプリ/システム名ごとにサウンドイベントと5つのキー(うち1つはユーザーが保存した項目)と設定値(サウンドファイルのパス)を表示させてみた。Foreach-Object(%がエイリアス)でifを使って表示し分けるようにしたほうが、見た目がわかりやすくなる。Nameプロパティは、レジストリオブジェクトにはあるが、Get-ItemPropertyを通すと使えなくなる

 さて、サウンド設定値をすべてファイルに保存するには、reg.exeのExportサブコマンドを使う。この形式は、Windowsではレジストリインポートの標準的な形式なので、編集してそのままインポートできる。基本的には、サウンドファイルさえ存在すれば、他のユーザー/他のマシンにも適用できる。

GCI -Recurse -Depth 1 HKCU:\AppEvents\Schemes\Apps|%{reg.exe Export "$(Convert-Path $_.PSpath)" "$((Split-Path -Leaf $_.PSParentPath))-$($_.PSchildName).reg" /y}

 ここには、アプリケーション/システム名のregファイルと、個々のサウンドイベントごとのregファイルが作成される。必要に応じて、これらを編集し、reg.exe IMPORTサブコマンドで読み込めば、サウンド設定のレジストリを書き換えることができる。

 GUI設定はわかりやすい反面、大量の項目を処理するのには向いていない。最終的にレジストリに設定情報が保存されているなら、今回紹介したような方法でコマンドラインから表示の確認やデータの編集が可能になる。

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン