2017年11月16日木曜日

悪夢再び ~Windows10スリープの勝手な復帰~

 正直ちょっと頭に来てる。いい加減にしろと。


2018/01/07
あーあ正月早々やられたYO!
ほんっっっっっとむかつく

2017/12/24
 とりあえず決着ということにしておく。
 【免責】当エントリ含む当ブログに記載されている事項及びその関連するすべてにおいて、これらをもとに作業を実施した際に生じた全ての事象(損害、不利益等含む)について当方は一切の責を負わないものとする。

2017/11/16
 現状で状況が進行中であり根本的解決のめどがまだ立っていないので適宜このエントリに追記していく形にする。


============================================
2018/01/07












 私のいない間何の目的で勝手なスリープ/休止解除を繰り返したんだろう。さぞ意義のある崇高な目的があるんだろうなぁ。
アップデートによる再起動要求に気づいたのは01/07。PCをシャットダウンした際にシステム更新の進捗が表示されたので気づいた。01/05にKB4056892があたっていたらしい。
なおシャットダウン~手動起動のあとに再起動要求状態になっていた。2回再起動が必要なパターンだったのか?「シャットダウン」ではなく「再起動」をいちいち選ばないと更新してくれないのか?

 以前設定したPC使用のアクティブ時刻は 17:00~11:00としておいた。なるほど非アクティブ時刻にここぞとばかり解除しまくってやがる。解除/復帰したところで何もしてないように見えるんですけどね!
この状態を確認した時点でのRebootタスクは無効状態となっており、powercfg -waketimersでの起動予約もなされていない。

 無意味にスリープ/休止を解除して消費電力を増大させるMicrosoft謹製マルウェアWindows10。確実に金銭的実害を被っている。
やりたくなかったが、もう完全に自動更新オフにするしかねーな。


============================================
2017/12/24
 前回以降パッチが3つ(KB4054517KB4053577KB4058043)あたったがRebootタスクには影響していない模様。
Rebootタスクを手動で実行して以降タスクが実行された形跡はなし。予約も入っていない。S-1-5-18は相変わらずタスク変更権強奪中でたぶんこのまま仕様として固定されそうな予感。

 もうそろそろいいかなーということで、WindowsUpdate後の勝手なスリープ解除の対処方法。
従来は
  ・Rebootタスクの「タスクを実行するためにスリープを解除する」のチェックを外す
だったのを
  ・Rebootタスクを手動で1回実行する
に作業内容を変更することで一応の決着としておくことにする。
これでRebootタスクによる勝手な「スリープ/休止からの復帰」を停止できるっぽい。…次回Rebootタスクが起動設定されるまでは。

 Rebootタスクが実行する MusNotification.exe はどうも大したことをしていないようなので勝手に手動実行しても問題ないかなぁとの素人判断。
従来パッチ適用後に手動でやっていたことと手間はほとんど変わらんので「まーいいか」くらいの所感。この手間も嫌ならRebootタスクを実行するスクリプトでも組んでPC起動中に定期的にタスク実行させる位かな。

納得?全くしてないYO!


============================================
2017/12/12
 WindowsUpdateで KB4051963 が適用された。何気なくパッチチェックをしてみたら幸いなことに手動でダウンロード/パッチ適用できるタイミングだったのでパッチをあてて再起動数回、適用完了した時点で powercfg -waketimers を確認すると
[SERVICE] \Device\HarddiskVolume4\Windows\System32\svchost.exe (SystemEventsBroker) によって設定されたタイマーは 11:16:29 (2017/12/12) で有効期限が切れます。
  理由: Windows は、スリープ状態の解除を要求したスケジュールされたタスク 'NT TASK\Microsoft\Windows\UpdateOrchestrator\Reboot' を実行します。
はい出ましたユーザの意に沿わない勝手なスリープ解除予約。これを確認している時点でパッチ適用は完全に完了しているのだが、何の目的のスリープ解除なの?新しいパッチが出た直後に不具合が見つかった場合の保険?そんなに自分が出すパッチに自信がないの?自信の無さを埋め合わせるためにユーザリソースを「勝手」に消費するの?なぜユーザ指定の次回スリープ解除時(タイマータスクであれLANイベントであれUIデバイス操作であれ)まで待てないの?

 タスクスケジューラを見るとRebootタスクの状態が今までは「無効」だったのが「準備完了」になっており、空白だった次回実行時刻がpowercfgの表示時刻におおむね一致している(なぜか30秒ずれてるが)。
やはり以前に設定したアクティブ時間の範囲外でスリープ解除が設定される模様。

 試し(半分ヤケ)に予定時刻前にタスクスケジューラから手動で「実行する」をしてみたら状態が無効になったものの次回実行時刻は変化なし。powercfgの予約表示からは消え去った。実行時刻になったらどうなるんだろう。…もしかしたら解決策になり得る?

 なおS-1-5-18様は相変わらずタスク変更権を強奪している模様。

…ふぅ。


============================================
2017/11/30
 Rebootの設定変更におけるS-1-5-18の話が海外掲示板でぽつぽつ出始めているのを確認。


============================================
2017/11/24
あれ以来休止時にRebootが発動していない。次回実行時刻欄もカラ。powercfg -waketimers でも実行予約を確認できていない。
WindowsUpdateでパッチがあたった直後にのみ稼働するタスクなのか?自分のマシンをコントロールできないことが非常にモヤつく。
S-1-5-18の認証ダイアログはやはり相変わらず出る。関連情報も特にヒットしない。もう諦めてRebootの編集にこだわるべきではないのか…。


============================================
2017/11/20
 とりあえず現在まで離席時は休止メインにしているが、11/16以来Rebootによる復帰はされていない。調査もちょっとおざなり気味になってきた。
S-1-5-18の認証ダイアログは相変わらず出る。


============================================
2017/11/17昼
 いつも存在を忘れるgpedit.msc。WindowsUpdate関連の設定もあるのでちょっと調べてみる。

2017/11/17朝
 とりあえず夜中に再起動した痕跡はなし。
昼間をアクティブ時間外としたのでそこで休止状態から勝手に復帰するか様子を見る。


============================================
2017/11/16
 WindowsUpdateによる更新がかかると、スリープ時でも勝手に復帰する設定に変更されるタスク \Microsoft\Windows\UpdateOrchestrator\Reboot (以下Rebootと略記)。
いままでは勝手に起動していたら「ああまたか」と、Rebootタスクのプロパティ画面から「タスクを実行するためにスリープを解除する」のチェックを外していた。今回も休止して離席後戻ったらPCが起動していたので見ると案の定該当のチェック項目が有効になっていた。が、そのチェックを外してOKボタンを押したら


 …は? S-1-5-18様…どちら様?
 今までこんなダイアログ出ずに変更できてたぞ?1か月くらい前にやったときもこんなもん出なかった。
該当のチェック項目変更有無に限らずRebootのプロパティダイアログでOKボタンを押下するとこれが出てくる。タスクスケジューラを管理者権限で起動しても同様。試しに管理者権限を持てるユーザ名とパスワードを入れてみても










となる。
そもそも最初に表示されるユーザ S-1-5-18 はビルトインのSIDであり、システム(LocalSystem)を示す。こいつのパスワードなんてそもそも公開されているのか?されてるわけねーわな。

 これを変更できないと何が困るのかというと電気代。テレビの録画がタスクスケジューラを利用した予約システムのため、離席時や就寝中は基本的に休止状態にしておりいちいち「予約がないからシャットダウンする」というような判断はしないようにしている。
が、Rebootが不意打ちでPCを復帰させるので予約が無くても「復帰-コンソール操作なしによるスリープ-休止」までの15分間ただ無駄に電気を消耗するだけなのである。これが1時間毎に起こる。HDDも起動回数が増えるのでハード的寿命に影響を及ぼす。
 なお15分というのは私が設定した値だが、あくまでPC使用中の合間を想定した値であるため「離席するから/就寝するから」というときにいちいち値を変えればいいんじゃね!使用する段になったらまた値戻せばいいじゃん!
…ってのは底なしのナンセンスだよな。

きっかけとして考えられるのは、タイミング的に直近のWindowsUpdateによる更新 KB4048955 KB4048951 KB890830 。この3つの適用日付は11/15。
イベントビューアのフィルタを編集してRebootによる復帰を抽出してみると








あからさまにWindowsUpdate後にRebootによるスリープ解除が始まっている。
もちろんイベントログは2017/11/15 17:50:54以前から記録されており、2017/11/03からのログが残っている。それ以前は手動で消したのだが11/03ってなんだったっけ?とパッチ履歴見たら前回のWindowsUpdate適用日じゃんw。
 のちの検証のためイベントビューアのフィルタ内容を書いておく。(フィルタの直接編集は初めてだったので念のため)
<QueryList>
    <Query Id="0" Path="System">
        <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power' or @Name='Microsoft-Windows-Power-Troubleshooter']] and EventData[Data[@Name='WakeSourceText']='Windows は、スリープ状態の解除を要求したスケジュールされたタスク ''NT TASK\Microsoft\Windows\UpdateOrchestrator\Reboot'' を実行します。']]
        </Select>
    </Query>
</QueryList>

 一度KB890830をアンインストールして再起動したのだが、OS起動時の円がクルクルまわるアニメーションが30分以上終わらなかったので電源を強制ブッチ-再起動コンボ。ログインできるようにはなったがちょっと目を離したすきにKB890830がインストールされており、再起動を待つ状態になっていた。この状態でもタスクの変更は出来なかった。アンインストール後の再起動時はLANケーブル抜いといたほうがいいのかな…。

 とりあえずRebootが起動する時刻帯に関連すると思われるアクティブ時間の変更を行ってみる。深夜帯をアクティブ時間として設定して休止させ、Rebootが起動しないか確認する。
根本の話であるタスク変更時の実行ユーザ認証要求についてはまだ情報がない。これについては「自分だけじゃない!MSが悪いに違いない!」と信じて他の人からの情報が出てくるのを待つほかないな…。

2 件のコメント :

  1. 下記のような記事がありました。どなたかのためになれば・・・
    https://answers.microsoft.com/ja-jp/windows/forum/all/%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E5%A4%89/1d527348-0266-4e12-a190-0fee873f0df4
    ◆コントロール パネル > システムとセキュリティ > セキュリティとメンテナンス > メンテナンス > メンテナンス設定の変更 > [スケジュールされたメンテナンスによるコンピューターのスリープ解除を許可する] のチェックをオフにする

    返信削除
    返信
    1. コメントありがとうございます。
      1年以上前のエントリですが、現在も状況は変わりませんね。
      問題のタスクが RebootからUniversal Orchestrator Startに変わったくらいでしょうか。

      ご指摘の設定をオフにしても変わらず勝手にスリープ解除はされます。
      結果的には深夜帯をアクティブ時間に設定し、不在が多い/録画予約がまずない 昼間にはシャットダウンするというアナログ(アナクロでもある)な運用をするようになりました。
      ご教示のURL内にも書かれているMicrosoft謹製のハックツールも存在は知っていましたが方法論としてはスマートではないのでやりたくないんですよね…大型パッチがあたるごとに設定しなおさなきゃならんし。

      Windowsって使いやすいですね(反意)

      削除