Windows 起動音等を消す WSH スクリプト

経緯

Windows の起動音が煩わしいです。
複数の環境を手動で消すのは面倒なので WSH スクリプトでサクッと消します。

消します。

上記の音を消します。
Windows XP SP3 で動作確認を行いました。
注意点、keysend で操作を行っているので誤作動を防ぐために待機時間を多めにとっています。
処理が遅い場合は下記のように "WScript.Sleep" を短くしてください。

WScript.Sleep 100

逆に、処理が早すぎて誤動作が発生してしまう場合は値を大きくしてください。
soundkill.vbs を右クリックで保存してください。soundkill.vbs を実行すると、自動的に "サウンドとオーディオデバイスのプロパティ" を開き、上記 4 つの 音を "サウンドなし" に設定します。

ソースコード

Dim objWshShell                                                               '変数 objWshShell を宣言
Set objWshShell = WScript.CreateObject("WScript.Shell")                       'WScript.Shell オブジェクトを変数 objWshShell へ代入
objWshShell.Run "control.exe mmsys.cpl ,1"                                    '"サウンドとオーディオデバイスのプロパティ" の "サウンド" タブを開く

Sub soundkill()                                                               'Sub プロシージャ soundkill の定義、"サウンドなし" を設定する
    objWshShell.SendKeys "{DOWN}"                                             '1 つ下へ移動
    WScript.Sleep 500                                                         '500 ミリ秒待機する
    objWshShell.SendKeys "{TAB}"                                              '"サウンド" へフォーカスを移す
    WScript.Sleep 500                                                         '500 ミリ秒待機する
    objWshShell.SendKeys "{BS}"                                               '"サウンド" の指定を一旦削除
    WScript.Sleep 500                                                         '500 ミリ秒待機する
    objWshShell.SendKeys "{DOWN}"                                             'サウンド無しを指定
    WScript.Sleep 500                                                         '500 ミリ秒待機する
    objWshShell.SendKeys "~"                                                  '本当にサウンド無しでいいか確認、"はい" を選択
    WScript.Sleep 500                                                         '500 ミリ秒待機する
End Sub                                                                       'Sub プロシージャの定義 ここまで

Do Until objWshShell.AppActivate("サウンドとオーディオ デバイスのプロパティ") '"サウンドとオーディオ デバイスのプロパティ" が起動しているかチェック
    WScript.Sleep 1000                                                        '起動していない場合は 1000 ミリ秒待機する
Loop                                                                          '起動チェックへ戻る
objWshShell.SendKeys "{TAB 3}"                                                '"プログラム イベント" の項へ移動
WScript.Sleep 500                                                             '500 ミリ秒待機する
objWshShell.SendKeys "{DOWN 2}"                                               '2 つ下へ移動
WScript.Sleep 500                                                             '500 ミリ秒待機する
Call soundkill()                                                              '"Windows の起動" を選択、サウンドなしに
Call soundkill()                                                              '"Windows の終了" を選択、サウンドなしに
Call soundkill()                                                              '"Windows ログオフ" を選択、サウンドなしに
Call soundkill()                                                              '"Windows ログオン" を選択、サウンドなしに
objWshShell.SendKeys "~"                                                      'ok
WScript.Quit                                                                  '処理を終了