Windows 10 1903でスリープが勝手に解除されるのを直す方法

Windows 10 Update 1903 の通知が来たのでインストールしたらスリープしているマシンが勝手に解除されるようになった。
イベントログをみると 「Update Orchestrator Idle Start」が解除してるところまではわかったが、こいつが難物。



結論から書くと以下の手順を実行すること。だめだった。



1.「https://docs.microsoft.com/en-us/sysinternals/downloads/psexec」にある
 「PsTools」をダウンロードして適当なフォルダに展開する。

 


2.上記のフォルダをエクスプローラーで開き、エクスプローラの
 「ファイル⇒PowerShell⇒PowerShellを管理者で実行」を行う。



3.以下のコマンドを実行する。
  「.\psexec -s -i cmd.exe」すると新しいウインドウが立ち上がる。
 

4.新しいウインドウで「taskschd.msc 」を実行。するとタスクスケジューラが立ち上がる。


5.「タスクスケジューラ(ローカル)
  >タスクスケジューラライブラリ
   >Microsoft
    >Windows
     >UpdateOrchestrator」を開く。



6.「Univalsal Orchestrator Idle Start」を右クリックして「プロパティ」を開く。


7.「条件」タブを開き、「タスクを実行するためにスリープを解除する」のチェックを外す。



8.「Univasal Orchestrator Start」にも6.~7.を行う。
  ※自分は「Reboot」が無効になっているが、無効になっていない場合はこれらにもやったらいいかと思う。

とりあえず、以上だが、ついでに以下もおまじないとしてやっておくといいと思う。

9.Windowsスタートボタンを右クリック
 ⇒「ファイル名を指定して実行」
 ⇒「gpedit.msc」
 ※Windows 10 Proの場合。Homeの場合は知らん。
  gpeditをどこかからダウンロードできたはず。

10.グループポリシーエディタが開いたら
 「ローカルコンピュータポリシー
  >コンピュータの構成
   >管理者テンプレート
    >Windowsコンポーネント
     >Windows Update」のなかの
 「Windows Updateの電源管理を有効にして、システムのスリープ状態が…」を開いて
 「無効」にする。

こんなもんでしょう。




3日ぐらいたっても大丈夫とかそういう報告あるけど本当に?

何が起きているかというと、スリープさせるとその直後に再立ち上げしてタスクスケジューラ見るとまた「スリープ解除する」にチェックが入っている。
そのチェックを入れるタスクが何かあると思ったけど、その前後で動くタスクを調査してみたら、なかった・・・。
Orchestratorサービスがなんかやっている気がする。

で、仕方ないので、後ろ向きの対策を打つことにしました。
何かというと、スリープ解除されたらまたスリープする。

それだけです。

1.新しくタスクを作ります。
2.タスクのトリガに「イベント時」にして、
  ログ:「システム」
  ソース:「Power-Troubleshooter」
      イベントID:「1」
3.操作でスリープするバッチなり、プログラムなりを記載する。

※注意:単純に記載すると自分でスリープ解除したいのに、スリープに戻っちゃいます。再スリープするまでに時間的余裕を持たせたほうがいいでしょう。


と、いうことで、プログラム作りました。

WindowsSuspendForm.zip


使い方。
1.WindowsSuspendForm.exe を引数なしで実行すると、即座にスリープ。
2.WindowsSuspendForm.exeをなんでもいいので引数を1つ渡すと、マウス、キーボード、ジョイパッドを操作中は何もしない。どれも操作しないで25秒後にスリープ。
3.WindowsSuspendFrom.exe に HHMM-HHMM 形式で引数を渡した場合、2.の条件か、HHMM-HHMMで指定された間の時間にプログラムが起動された場合はスリープしない。

うちのPCは夜は止めておきたいけど、いろいろあって朝9:00に自動起動するようにしているので、3.が必要だったのです。
と、いうことで、タスクには「C:\ProgramData\WindowsSuspend\WindowsSuspendForm.exe」
引数「0855-0905」と設定しています。
ちなみにもともとこのプログラム1.と2.は実装していて、今回3.を付け加えたんだけど、普段はタスクバーにピン止めしていて、一発クリックで即座にスリープです。
よく、間違えて押しちゃうけど。

2.の機能はやはりタスクスケジューラに登録しておいて、決まった時間に自分がいる場合はスリープしないし、自分がいない場合はスリープするように毎日起動させてます。

コメント

このブログの人気の投稿

楽天ラッキーくじ スタートページ

楽天ラッキーくじ 処理設定ページ