スピーカーをmute(音を下げる)にするスクリプトが動作しない、エラーがでる

スピーカーをログオン時にミュートにしたり、音を下げるスクリプトを探していたのですが、海外やブログやサイトに有用な情報があり、試してみました。


まず、以下の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" 'Runs The Master Volume App.
WScript.Sleep 1500 'Waits For The Program To Open
oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0, If It Is Muted Then It Will Unmute It
oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0
oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0
oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0
oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0
oShell.SendKeys"%{F4}"  ' ALT F4 To Exit The App. 


これも動作自体は問題ないのですが、このスクリプト実行中にユーザー操作があると、ダメみたいです。


おそらくSendKeysでキーを送っているので、そのときに、別の操作をしているとだめなのかもしれません。


その為、ログオンスクリプトを即時実行されるようにすれば、問題なく動作するかもしれません。


ちなみに、Windows8.1以降は、ログオンスクリプトの実行がデフォルトで5分後になっていますので、即時実行させたい場合は、以下のポリシーを有効化し、値を0にすることで、設定が無効になり、すぐにログオンスクリプトが適用されます。

コンピューターの管理 \ システム \ グループ ポリシー: ログオン スクリプトの遅延を構成 = = > 有効になっています。 
ポリシーが有効に設定して時間を分単位で設定すると、グループ ポリシー クライアントはユーザーのログオン時にログオン スクリプトが実行される前に、指定した時間待機します。として 0 (ゼロ) 分の時間を入力すると、設定が無効になり、グループ ポリシー クライアントが遅延なくユーザーのログオン時にログオン スクリプトを実行します。


Windows Server 2012 R2,Window 8.1でログオンスクリプトが動作しないという方は、参考にしてみてください。