スピーカーをログオン時にミュートにしたり、音を下げるスクリプトを探していたのですが、海外やブログやサイトに有用な情報があり、試してみました。
まず、以下の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 OpenoShell.SendKeys("{PGDN}") 'Turns Up The Volume 0, If It Is Muted Then It Will Unmute ItoShell.SendKeys("{PGDN}") 'Turns Up The Volume 0oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0oShell.SendKeys("{PGDN}") 'Turns Up The Volume 0oShell.SendKeys"%{F4}" ' ALT F4 To Exit The App.
これも動作自体は問題ないのですが、このスクリプト実行中にユーザー操作があると、ダメみたいです。
おそらくSendKeysでキーを送っているので、そのときに、別の操作をしているとだめなのかもしれません。
その為、ログオンスクリプトを即時実行されるようにすれば、問題なく動作するかもしれません。
ちなみに、Windows8.1以降は、ログオンスクリプトの実行がデフォルトで5分後になっていますので、即時実行させたい場合は、以下のポリシーを有効化し、値を0にすることで、設定が無効になり、すぐにログオンスクリプトが適用されます。
コンピューターの管理 \ システム \ グループ ポリシー: ログオン スクリプトの遅延を構成 = = > 有効になっています。
ポリシーが有効に設定して時間を分単位で設定すると、グループ ポリシー クライアントはユーザーのログオン時にログオン スクリプトが実行される前に、指定した時間待機します。として 0 (ゼロ) 分の時間を入力すると、設定が無効になり、グループ ポリシー クライアントが遅延なくユーザーのログオン時にログオン スクリプトを実行します。
Windows Server 2012 R2,Window 8.1でログオンスクリプトが動作しないという方は、参考にしてみてください。