- 締切済み
ScreenSaverIsSecureの即時反映
windows7でスクリーンセーバーの設定 「再開時にログオン画面に戻る」 の有効/無効をExcelマクロ(VBA7.0)から変更しています。 レジストリ「ScreenSaverIsSecure」の設定変更内容を 即時反映するには、どのようにすればよいのでしょうか。 また、もしVBA以外で即時反映できる用でしたら、 そちらも併せてご教示いただきたく存じます。 ●レジストリパス ・HKCU:\Control Panel\Desktop\ScreenSaverIsSecure ●現状 ・マクロ自体は正常終了し、上記以外のレジストリ値は 即時反映されます。 ・レジストリエディタでは変更(1→0,0→1)を確認できますが、 即時反映されません。 ・マクロ内でSendMessageを追記してみましたが、 即時反映はされませんでした。 ・レジストリが0でも即時反映されないため、 スクリーンセーバ開始→マウスを動かす→ログオン画面 に戻ってしまいます。 以上、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kteds
- ベストアンサー率42% (1882/4440)
回答No.1
私の環境では(W7、W8、W8.1とも)次のようにすれば反映されます。 コマンドプロンプトで試してみて、動作すことを確認して、マクロに設定してみてください。 1. ScreenSaverIsSecure の値を変更する。 2. RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True を実行する。 3. ScreenSaveTimeOut の時間が経過すれば、ScreenSaverIsSecure変更が反映された画面で再開される。
補足
kteds様 ご回答いただきありがとうございます。 本件、ご教示いただきました方法をそのままbatにして実行してみましたが、 即時反映はされておりませんでした。。。 試行手順は以下の通りです。 (1)ご教示いただいたコマンドを記載したbatファイルを作る。 (2)タスクスケジューラで開始時刻を5分後に設定する。 (3)しばらく放置し、スクリーンセーバが起動。 (ScreenSaveTimeOut=60、ScreenSaverIsSecure=1) (4)タスクスケジューラにより自動でbatが実行される。(この間もPCには触れていません) (5)タスクスケジューラを予約した時間から5分以上放置したのち、キーボードを触り、 スクリーンセーバを解除する。 (6)ユーザロック画面になってしまう。 本件、スクリーンセーバが起動していない状態でタスクを実行させる または batを手動で実行すると、その後にスクリーンセーバが起動しても、なりました。 もし何かご存知でしたらご教示いただきたく存じます。 以上、よろしくお願いいたします。