web-dev-qa-db-ja.com

ウェイクタイマーによるWindows 10デスクトップのウェイクアップを確実に停止

ユーザーの介入なしにWindows 10デスクトップをスリープ/休止状態から復帰させるにはどうすればよいですか。

多くのユーザーにとってこれは問題にならないでしょう、しかしあなたがあなたのPCと同じ部屋で眠っているならば、更新をダウンロードするためにあなたの機械が午前3時30分に起きるのを刺激するのはいらいらします。

221
seagull

答え

これに影響を与える可能性があることがいくつかあります。このサイトには、この問題に取り組むためのさまざまな方法を詳述した投稿があることを承知しています。この記事はそれらを統合し、誰かがそれ自身によって影響を受けるような問題に私自身の洞察を加えることを目的としています。

ステップ2で概説した修正は、Windows Updateのインストール後にWindows 10がマシンを再起動するのを防ぐためにも使用できます。

この修正は、秋更新(1709)にも適用されます。ただし、更新プロセスで置き換えられるため、 '再起動'タスクを再度無効にしてセキュリティ権限を再設定する必要があります。

ステップ1:すべての電力プロファイルのウェイクタイマーを無効にする

怠け者のハイテクブロガーは、これであなたの検索が終了すると信じてもらえるでしょう。この手順によっていくつかの誤ったシャットダウンが排除されることは事実ですが、特にWindows 10では、ユーザーの介入に関係なくこの設定を尊重できない設定や構成がいくつかあります。 [コントロールパネル]> [電源オプション]に進みます。ここから、リストの先頭にある電力プロファイルをすべて選択し、「Wake timers」を無効にします。すべてのプロファイルを調べます。

Power settings

(StackExchangeユーザー olee22 画像に感謝します)

Windows 10では、この設定を固定することを強くお勧めします すべての電力プロファイルに対して あなたが使用することを選択したものだけでなく - /。さまざまなWindows機能が異なるプロファイルを使用します。これは目が覚めないというあなたの可能性を改善します。

ステップ2:手に負えない「再起動」スケジュールされたタスクを無効にする

注: Windows 10システムの再起動を停止するために使用できるPowerShellスクリプトを作成しました。あなたはそれをここで見つけることができます: https://github.com/seagull/disable-automaticrestarts

Windows 10のUpdateOrchestratorスケジュールタスクフォルダには、 "reboot"というタスクが含まれています。このタスクは、利用可能かどうかにかかわらず、コンピュータを起動してアップデートをインストールします。単にコンピュータを起動させる許可を削除するだけでは不十分です。あなたがタスクスケジューラを去った後、ウィンドウズはそれを編集してそれ自身に再び許可を与える。

コントロールパネルから管理ツールを入力し、タスクスケジューラを表示します。 Entering Task Scheduler

Task Scheduler

これがあなたが望むタスクです - タスクスケジューラライブラリ>マイクロソフト>ウィンドウズ> UpdateOrchestrator。あなたがしたい最も重要なことは以下のとおりです。

Remove permission for task to wake PCDisable task

ここから、Windowsがそれを害することができないように、あなたはタスクのための許可を変更する必要があるでしょう。タスクは C:¥Windows¥System32¥Tasks¥Microsoft¥Windows¥UpdateOrchestrator にあります。ファイルの拡張子なしで「再起動」と呼ばれます。右クリックしてプロパティを入力し、 自分を所有者にします 。最後に、次のように設定します。

Reboot file with only read permissions

ここでは、ファイルはSYSTEMに対する読み取り専用権限で表示されています。どのアカウントにも書き込み権限がなく、自分自身の権限でもないようにします(必要に応じて後で権限をいつでも変更できます)。この画面の[詳細]ボタンからファイルへの継承された権限を無効にして、ルートフォルダの既存の権限を上書きするようにしてください。これにより、実装後にWindowsがあなたの変更を100%混乱させることがなくなります。

これが設定されれば、あなたはもうそのスケジュールされたタスクについて心配する必要はありません。

Windows 1709用のメモ(Fall Creators 'Update)

Windowsのインストールプロセスによってファイルのアクセス権が変更されるため、アップグレード後に必ずこのガイドに目を通してください。私は新しいタスクがそれに適用される同じステップを必要とする「AC電源インストール」と呼ばれるようにされるという報告を聞いたことがある、私は16299.192(2018-01 Meltdownパッチ)アップデートをインストールした後絶対的な確信は持てません。上記で実行したのと同じステップは、導入されたすべてのタスクに対して機能します。

ステップ3:PowerShellでウェイクタイマーを確認する

ウェイクタイマー機能を無効にしましたが、Windows 10にはその設定を尊重しない習慣があります。そのため、安全のため、PowerShellコマンドを実行して、実行可能なことにPCをウェイクアップできるすべてのタスクを排除します。管理PowerShellコマンドプロンプトを開き([スタート]ボタンをクリックして「Powershell」と入力し、Ctrl + Shift + Enterを押します)、次のコマンドをウィンドウに配置します。

Get-ScheduledTask | where {$_.settings.waketorun}

一覧に表示されているすべてのタスクを実行し、コンピュータをウェイクアップする権限を削除します。 Rebootで行ったように権限について心配する必要はありません。それは範囲外の事件でした。

ステップ4:どのハードウェアがあなたのPCを起動させることができるかチェックする

たくさんのUSBハードウェアは、使われると、あなたのPCを起動させることができます(キーボードは、例えばキーが押されたときによく起こります)。このシナリオでは、通常Wake on LANも問題になります。初心者にとって、現代のハードウェアの一般的で便利な機能は 'Wake on LAN'と呼ばれています。デバイスが有線イーサネットケーブルでローカルネットワークに接続されている場合(Wi-Fiでは機能しません)、それを介して通信を送信でき、受信時にPCが起動します。これは私がよく使う機能ですが、デフォルトの振る舞いはあまりにもやり過ぎであるため、一直線に並べなければなりません。

管理コマンドプロンプトに次のコマンドを入力します。

powercfg -devicequery wake_armed

Command Prompt output of command

ここから、デバイスマネージャ(コントロールパネル)でデバイスを見つけ、[電源の管理]タブの下で、コンピュータを起動させる機能を削除します。 Wake-on-LANを保持したいネットワークインターフェイスカードがある場合は、送信されたすべてのトラフィックをウェイクアップするのではなく、「このデバイスでマジックパケットを受信した場合にのみウェイクアップする」を有効にします。

ステップ5:グループポリシーを確認して完全に確実にする

スタートメニューを右クリックして[ファイル名を指定して実行]を選択します。 GPEdit.MSCを入力します。 [コンピュータの構成]> [管理用テンプレート]> [Windowsコンポーネント]> [Windowsの更新]> [Windows Update電源管理を有効にしてシステムを自動的に起動してスケジュールされた更新をインストールする]で次の設定を探します。それをダブルクリックして無効に設定します。

Disabling Windows Update wake functionality

ステップ6:自動メンテナンスのためにあなたのマシンを起こさないようにする

マイクロソフトの誰かがこれに対するユーモアのセンスを持っています。あなたがあなたのPCで夜中に目覚めているなら、あなたが何よりもあなたが何よりも聞きたいのはそれが夜間のデフラグをするのと同じようにハードドライブのクランチと研削です。コントロールパネルの「セキュリティとメンテナンス」セクションを見付けて、この機能を無効にします。そこから、「メンテナンス」を展開して、「メンテナンス設定の変更」へのリンクを探します。

Disable automatic maintenance

時間を社交的なものに設定し(午後7時は問題ありません)、タスクのために自分自身を起こす能力を無効にします。

350
seagull

私は今、このスクリプトを使用して、ウェイクタイマーによるWindows 10デスクトップのウェイクアップを最終的に停止します

# disable wake for enabled scheduled tasks that are allowed to wake
Get-ScheduledTask |
?{ $_.Settings.WakeToRun -eq $true -and $_.State -ne 'Disabled' } |
%{
    write-Host $_
    $_.Settings.WakeToRun = $false;
    Set-ScheduledTask $_
}

# disable wake for devices that are allowed to wake (list of wake capable devices: powercfg -devicequery wake_from_any)
powercfg -devicequery wake_armed |
%{
    write-Host $_
    if ($_ -notmatch '^(NONE)?$')
    { powercfg -devicedisablewake $_ }
}

# disable wake timers for all power schemes
powercfg -list | Select-String 'GUID' |
%{
    write-Host $_
    $guid = $_ -replace '^.*:\s+(\S+?)\s+.*$', '$1'
    powercfg -setdcvalueindex $guid SUB_SLEEP RTCWAKE 0
    powercfg -setacvalueindex $guid SUB_SLEEP RTCWAKE 0
}

# disable wake for automatic updates and for automatic maintenance
'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU\AUPowerManagement', 
'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance\WakeUp' |
%{
    write-Host $_
    $key = split-path $_
    $name = split-path $_ -leaf
    $type = 'DWORD'
    $value = 0
    if (!(Test-Path $key))
    { New-Item -Path $key -Force | Out-Null }
    if ((Get-ItemProperty $key $name 2>$null).$name -ne $value)
    { Set-ItemProperty $key $name $value -type $type }
}

お分かりのように、スケジュールされたタスクファイルのパーミッションを除いて、 this answerに記載されているすべてのステップを多かれ少なかれ扱っています。しかし、ロック解除/ログオンのたびに run このスクリプトを静かに実行するつもりなので、これがまったく問題にならないことを願っています。

25
mousio

私は他の答えが信じられないほど役に立ち、可能であればコメントするだけですが、ここで見つけたステップ3と4を手助けするためにすぐに書いたソフトウェアの一部を寄稿したいと思いました。

https://github.com/Omniru/System-Wake-Manager/wiki/Home-&-Download

うまくいけば、それはいくつかの人々にいくつかの用途になります。

enter image description here

enter image description here

このポップアップが表示された場合は、[詳細]をクリックしてから[実行]をクリックする必要があります(ソースコードを確認してください、github afternlにあります): enter image description here

9
Eric