Bu, "Kur ve Yeniden Başlat Değil Kur ve Kapat" Google aramalarında yüksek görünür. Bu yüzden, bu sinir bozucu problem için yazmayı bıraktığım bir çözümü eklemem gerektiğini düşündüm (insanlar bana Win10’un varsayılan olarak olduğunu söylüyor, ancak ben Win10’da değilim).
Bu iki toplu iş dosyası kullanarak çalışır. İlki "rebootAfterUpdates.bat" olarak adlandırılır.
@echo OFF
@setlocal ENABLEEXTENSIONS
@set REBOOT_KEY="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
@SET REGDWORD=REG_DWORD
@SET VALUEVAL=0x1
@REM skip=4 may be required on some versions of Windows
@FOR /F "usebackq skip=2 tokens=1-3" %%A IN (`reg query %REBOOT_KEY% /s 2^>nul`) DO (
@IF %%B EQU %REGDWORD% (
@IF %%C EQU %VALUEVAL% (
call :REBOOT
)
)
)
:NOREBOOT
@Echo No reboot required
exit /b 36877
REM 36877 is 0x900D (i.e. Good, no reboot required)
:REBOOT
@ECHO Here We REBOOT
SHUTDOWN -r -f -t 10
exit /b 3059719
REM 3059719 is 0x2EB007 (i.e. REBOOT was triggered)
İkincisi "scheduleRebootAfterUpdates.bat" olarak adlandırılır:
@schtasks /query /TN RebootAfterUpdates > doh
@findstr /B /I "RebootAfterUpdates" doh >nul
@if %errorlevel%==0 goto :update
@goto :create
:update
@del doh
@SCHTASKS /Change /TN RebootAfterUpdates /SD %DATE%
@echo Task updated to execute today
@goto :exitBat
:create
@del doh
@SCHTASKS /Create /SC ONCE /TN RebootAfterUpdates /TR "C:\tmp\Scripts\rebootAfterUpdates.bat" /ST 23:55 /sd %DATE% /ru SYSTEM /f
@echo Task created. Set the "Wake to Execute Flag" through Task Scheduler GUI
:exitBat
@exit /b
Her iki dosyanın da C: \ tmp \ Scripts \ konumunda olduğu varsayılır. Windows sizi "Güncelleştirmeleri Yükle" ye getirdiğinde, güncelleştirmeleri yüklemeye başlamasını sağlayın. Güncelleştirmeleri yüklerken "scheduleRebootAfterUpdates.bat" dosyasını çalıştırın.
Operasyonun geçmişi:
Güncellemeler yeniden başlatmayı gerektiriyorsa, bazı kayıt defteri anahtarları (WindowsUpdate reg anahtarının altında) 0x1 değerine ayarlanır.
Bu anahtarların ilk yarasa dosyasında var olup olmadığını kontrol ederiz. Onlar yaparsa, hemen yeniden başlatın.
Normal olarak, işten ayrılmak üzereyken (ve gece yarısından 4-5 saat önce) güncellemeleri tetiklerim.
İkinci yarasa zamanlanmış bir görev oluşturur (ya da varolan bir görevi gece yarısından 5 dakika önce çalışacak şekilde günceller) ve bu zamanlanmış görev ilk yarasayı yürütür.
Bu yüzden ... en şık çözüm olmasa da, iki adımda (1. 'Güncellemeleri Yükle'yi başlat ve ikinci yarasa dosyasını çalıştır), makineniz güncellemelerin yüklenmesinin başarılı olduğunu varsayarak gece yarısına yakın bir zamanda yeniden başlayacaktır.
Ek olarak, Görev Zamanlayıcı GUI'sinden 'görevi yürütmek için makineyi çalıştır' seçeneğini ayarlayabilir ve en son ne olduğunu görmek için yürütme dönüş kodunu kontrol edebilirsiniz.
PS Win7 64bit'te test edilmiştir.