WindowsServer2012R2でログオン時にスピーカー(ボリュームコントロール)をミュートにする

Windows Server 2012 R2でログオン時にスピーカーをミュートにしたい場合に、ネットを色々と検索すると、色んなやり方が紹介されています。


まず、やりたい事は、手動ではなく、自動でミュートにしたいのですが、その場合、コマンドやスクリプトでスピーカー(ボリュームコントロール)をミュートにする必要があります。


そこで、よくネットでヒットするのが以下のスクリプトです。


Set dx=CreateObject("MSWebDVD.MSWebDVD")
dx.Mute = True 'ミュートON
dx.Mute = False 'ミュートOFF



Windows7移行で以下のスクリプトを実行すると、以下のエラーが表示されてしまい、ミュートになりません。

エラー:ActiveXコンポーネントはオブジェクトを作成できません。
コード:800A01AD
ソース:Microsoft VBScript実行時エラー
 


ちなみに、Vecterには、音量をミュートにするスクリプトがありますが、これもWindows7以降では動作せず。

>>音量をミュート、また、コマンドラインで音量調節/表示するVBScript(Vecter)


後、よく紹介されているのが以下のコマンドですが、これも同様にエラーが表示され、動作しませんでした。
 
Set WshShell = CreateObject("WScript.Shell") 
WshShell.SendKeys(chr(&hAD))



そして参考になったのが以下のokwaveの投稿です。

>>Windows 7でキーを押すだけでミュートしたい


以下のvbsを実行するとWindows7以降でも問題なく動作しました。

set oShell = CreateObject("WScript.Shell")
oShell.run"%Systemroot%\System32\Sndvol.exe"
rem 1秒後にミュート
WScript.Sleep 1000
rem タブの末尾にスペース キー押下のスペース 1 文字があることに留意
oShell.Sendkeys"{TAB} "
rem sndvolダイアログを閉じる。% は Alt キー
oShell.Sendkeys"%{F4}"


これをログオンスクリプトに指定すれば、自動でログオン時にミュートさせることができます。


ただし、このスクリプトだとボリュームコントロールが起動する画面が見えてしまいますので、バックグラウンドでスクリプトを実行させるようにします。

set oShell = CreateObject("WScript.Shell")
oShell.run"%Systemroot%\System32\Sndvol.exe"  , vbhide
WScript.Sleep 1000
oShell.Sendkeys"{TAB} "
oShell.Sendkeys"%{F4}"



青字部分の変更で、バックグラウンドでvbsが実行されるようになります。


Windows8,1,Windows Server 2012 R2でログオン時にスピーカー(ボリュームコントロール)をミュートにしたい方は、参考にしてみてください。