自宅にWindows 10があり、管理者権限を持つユーザーとしてログインしています。 「タスクスケジューラ」の"Task Scheduler Library > Microsoft > Windows > UpdateOrchestrator"
の下に、「再起動」という名前のタスクがあります。プロパティを右クリックして[条件]に移動し、"Wake the computer to run this task"
を無効にします。 「OK」をクリックして変更を保存すると、ユーザーとパスワードの入力を求められます。 (ウィンドウには"Enter user account information for running this task"
と表示されます)。
「ユーザー名」フィールドには、デフォルトで「S-1-5-18」という値がすでに設定されています。これは、明らかにウィンドウの内部ユーザーの1つです。パスワードを使ってみましたがうまくいきませんでした。ユーザーを自分のユーザーに変更してパスワードを試してみましたが、成功しませんでした。 「管理者」ユーザーを有効にし、そのユーザーで同じことを試みましたが、成功しませんでした。
メッセージは"An error has occurred for task Reboot. Error message: The following error was reported: 2147943004"
です。設定を変更するための正しいユーザー/パスワードがわかりません。また、ユーザー/パスワードを要求しないように所有権を取得する方法や権限を変更する方法もわかりません。
自分のコンピューターで変更できない設定があることに本当に腹を立てているので、その理由と、適切なアクセス許可を取得する方法を知りたいのです。私は this guy と同じ問題を抱えているようですが、この設定を変更する方法については答えられませんでした。彼はなんとかそれを無効にしましたが、私もそれを行いましたが、タスクを無効にするかどうかに関係なく、設定を変更するために私が何をすべきかを知りたいのです。また、彼はwin10proにいて、私はwin10homeにいるので、lusrmgr.msc
またはgpedit.msc
にアクセスできません。
windows 10ホーム[...]
自分のコンピューターで変更できない設定があることに気が動転します...理由を知りたいです
あなた自身の質問に答えます。ホームは、システムを管理または維持する機能を必ずしも必要としないホームユーザー向けです。このようないくつかの設定からホームユーザーを締め出すことで、Microsoftはパッチが適用されていないシステムのXP時代の恐怖を防ぐためにいくつかの試みを行っています。それらを取得していません。
あなたの質問の根性に移ります。 S-1-5-18はLocalSystemユーザーです。これは非常に特権の高いアカウントであり、管理者でさえ、通常のユーザーは日常的に干渉することができないはずです。
ユーザーランドツールを使用してウィンドウを制御し、オペレーティングシステムがシステムとして実行される基本的なプロセスに必要な変更を加えるという考え方です。したがって、あなたが言及するタスクを制御することができない。理論的には、ここでは変更しないでください。通常の設定ウィンドウからアクセスするグラフィカルインターフェイスで変更する必要があります。
ただし、これらの保護を回避するために使用できるトリックがあります。
SYSTEMの権限で実行するには、次の操作を実行できます。
PSEXEC /S CMD.EXE
これにより、セッション0でSYSTEMとして実行されているコマンドシェルが提供されます。ここから、そのユーザーとしてコマンドを実行できます。つまり、これらのスケジュールされたタスクの機能を変更できます
SCHTASKS /Change
が最もありそうなオプションです。ここから、タスクの制御、停止、開始、削除を行うことができます
成功。何度も試した結果、これがWindows 10 Homeで機能します。 PSExecをダウンロードします。
PSEXEC/S CMD.EXE
SCHTASKS/Change/tn "\ Microsoft\Windows\UpdateOrchestrator\Reboot"/DISABLE
取得する必要があります:成功:スケジュールされたタスク "\ Microsoft\Windows\UpdateOrchestrator\Reboot"のパラメーターが変更されました。
Windows 10 Proを使用していますが、同様の問題が発生していました。タスクスケジューラのUIを使用して再起動タスクの[コンピューターをスリープ解除してこのタスクを実行する]設定を変更することはできませんでしたが、最終的にこの方法を使用できることがわかりました。
Patrickが提案したようにpsexecを使用する:
psexec
実行可能ファイルがある場所に移動します。.\psexec -s -i cmd.exe
を実行して、新しいcmdウィンドウを開きます。taskschd.msc
(または%windir%\system32\taskschd.msc
)を実行します。Windowsがコンピューターをスリープ状態から復帰させて強制的に再起動したときに、私はこの解決策を探し始めました。問題は、ブートローダーが入力を待つ間、CPUを100%に固定することです。これが起こると私のラップトップはしばしば閉じられ、触ると熱くなります。私も自分のデスクトップが心配です。午前中にブートローダーに座って、すべてのファンがオンになっているのを見つけて以来、正常に機能していません。
windows_update_reboot_toggle.bat
保護された再起動とスリープ解除タスクを無効にします。外部ツールは必要ありません。組み込みの取り消し。
@echo off &title Windows Update Reboot Toggle
reg query "HKEY_USERS\S-1-5-20\Environment" /v TEMP >nul 2>nul || goto need_admin_rights
set "updatetasks=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\UpdateOrchestrator"
call :check_status "%updatetasks%\Reboot"
echo.
echo ---------------------------------------------------------------------
echo : Windows Update Reboot Toggle v4.6 :
echo :---------------------------------------------------------------------:
echo : Prevent protected reboot and wake to run tasks without disabling WU :
echo : Just run this script again to toggle tasks on/off :
echo : :
echo : Currently: %STATUS%%_% :
echo : :
echo : Press Alt+F4 to cancel Always run latest version :
echo ---------------------------------------------------------------------
echo All-around Windows Update Toggle available at https://git.io/vx2et
echo.
timeout /t 10 &echo.
:: Use Reg_TakeOwnership snippet to unprotect UpdateOrchestrator task cache registry keys
reg add "%updatetasks%\Reboot" /v checkrights /d 1 /f >nul 2>nul || call :reg_takeownership "%updatetasks%" Administrators recursive
reg delete "%updatetasks%\Reboot" /v checkrights /f >nul 2>nul
:: Toggle Reboot task
call :toggle_task "%updatetasks%\Reboot"
:: Toggle Schedule Retry Scan task
call :toggle_task "%updatetasks%\Schedule Retry Scan"
:: Update status
call :check_status "%updatetasks%\Reboot"
echo.
:: Done!
echo -------------------------------------
echo Windows Update Reboot Tasks now: %STATUS%
echo -------------------------------------
echo.
pause
exit
::----------------------------------------------------------------------------------------------------------------------------------
:: Utility functions
::----------------------------------------------------------------------------------------------------------------------------------
:check_status %1:TaskCache entry in registry
reg query "%~1" /v "Id_OFF" >nul 2>nul && set "STATUS=OFF" || set "STATUS=ON!"
set "_= " &if "%STATUS%"=="OFF" ( color 0c ) else color 0b
exit/b
:toggle_task %1:TaskCache entry in registry
reg query "%~1" /v "Id_OFF" >nul 2>nul && set "isOFF=1" || set "isOFF="
reg query "%~1" /v "Id" >nul 2>nul && set "isOFF=" || set "isOFF=1"
if defined isOFF ( call :reg_query "%~1" "Id_OFF" ID_BACKUP ) else call :reg_query "%~1" "Id" ID_BACKUP
if defined isOFF ( reg delete "%~1" /v "Id_OFF" /f ® add "%~1" /v "Id" /d %ID_BACKUP% /f )
if not defined isOFF ( reg delete "%~1" /v "Id" /f ® add "%~1" /v "Id_OFF" /d %ID_BACKUP% /f )
exit/b
:reg_takeownership %1:regkey[ex:"HKCU\Console"] %2:_user[optional, default:"Administrators"] %3:_recursive[optional, default:""]
set "s10=$dll0='[DllImport(''ntdll.dll'')]public static extern int RtlAdjustPrivilege(ulong a,bool b,bool c,ref bool d);'; $ntdll="
set "s11=Add-Type -Member $dll0 -Name NtDll -PassThru; foreach($i in @(9,17,18)){$null=$ntdll::RtlAdjustPrivilege($i,1,0,[ref]0)};"
set "s12=function Reg_TakeOwnership { param($Hive, $key, $own, $inherit=$false);"
set "s13= $reg=[Microsoft.Win32.Registry]::$Hive.OpenSubKey($key,'ReadWriteSubTree','TakeOwnership');"
set "s14= $acl=New-Object System.Security.AccessControl.RegistrySecurity; $acl.SetOwner($own); $reg.SetAccessControl($acl);"
set "s15= $acl.SetAccessRuleProtection($false,$false);$reg.SetAccessControl($acl);"
set "s16= $reg=$reg.OpenSubKey('','ReadWriteSubTree','ChangePermissions'); if($inherit){"
set "s17= $rule=New-Object System.Security.AccessControl.RegistryAccessRule($own,'FullControl','ContainerInherit','None','Allow');"
set "s18= $acl.ResetAccessRule($rule);$reg.SetAccessControl($acl);} }; $rk=$regkey -split '\\\\',2; $key=$rk[1];"
set "s19=switch -regex ($rk[0]) { '[mM]'{$HK='LocalMachine'};'[uU]'{$HK='CurrentUser'}; default {$HK='ClassesRoot'}; }; $HK; $key;"
set "s20=if($user -eq ''){$user='Administrators'}; [System.Security.Principal.NTAccount]$owner=$user; $rcsv=($recursive -ne '');"
set "s21=Reg_TakeOwnership $HK $key $owner $true; if($rcsv){$r=[Microsoft.Win32.Registry]::$HK.OpenSubKey($key);"
set "s22=foreach($sk in $r.GetSubKeyNames()){$sk; try{ Reg_TakeOwnership $HK $($key+'\\'+$sk) $owner }catch{} }} "
setlocal & for /l %%# in (10,1,22) do call set "ps_RegTakeOwnership=%%ps_RegTakeOwnership%%%%s%%#:'=\"%%"
powershell.exe -c " $regkey='%~1';$user='%~2';$recursive='%~3'; %ps_RegTakeOwnership%;"
endlocal & exit/b AveYo: call :reg_takeownership "HKLM\MyKey" "NT Service\TrustedInstaller"
:reg_query %1:KeyName %2:ValueName %3:OutputVariable %4:other_options[example: "/t REG_DWORD"]
setlocal & for /f "skip=2 delims=" %%s in ('reg query "%~1" /v "%~2" /z 2^>nul') do set "rq=%%s" & call set "rv=%%rq:*) =%%"
endlocal & set "%~3=%rv%" & exit/b AveYo: call :reg_query "HKCU\MyKey" "MyValue" MyVar
:need_admin_rights
color 0c&echo. &echo PERMISSION DENIED! Right-click %~nx0 ^& Run as administrator &timeout /t 60 &color 0f&title %COMSPEC% &exit/b
::end
次のパスに移動して古いタスクをバックアップし、新しい空のタスクを作成することで、これを無効にすることができました。
%windir%\System32\Tasks\Microsoft\Windows\UpdateOrchestrator
ご使用のOSバージョンでそれが機能しない場合は、.bat
または このリンクのレジストリの変更 ですが、問題が発生するかどうかはわかりません。
「ホーム」と言うときは、もちろん、Win 10 Home対Win 10 Proを意味しますか?複数のコンピューター(すべてWindows 10 Home)を持っているので質問します。ほとんどの場合、管理者パスワードがポップアップせずにタスクを変更できますが、そうでないコンピューターもあります。ホームバージョンは違いを生みません、何か他のものが変更を妨げています。
更新を行う前に、Win 10のクリーンインストールからタスクを変更できると思いますが、更新が完了すると、タスクなどの多くのシステム機能を制御できなくなります。タスクを削除するのはよくありません。タスク内のトリガーを削除し、クリーンインストールの後でトリガーをすべて無効にする必要があります。