網頁

2022年3月5日 星期六

windows教育筆電一鍵安裝及設定重開機就還原

公用桌上型電腦,常會裝上還原卡,重開機就還原,以避免上一位使用者資料或安裝程式留下,影響後續使用者或資料留下被別人看到。除了裝還原卡之外,也可以裝軟體式還原系統,重開機就還原。早期電腦速度不夠快,裝軟體式還原系統,可能會影響電腦執行速度,隨著cpu越來越快,ram不斷增加,加上使用固態硬碟,裝軟體式還原系統後,已感覺不出會影響電腦速度。

公用筆記型電腦,較少聽到裝還原系統,如有要裝,大概只能裝軟體式還原系統。因筆記型電腦的效能本來就不及桌上型電腦,裝軟體式還原系統,會影響執行速度。隨著cpu效能提升,ram增加,筆記型電腦採用固態硬碟,裝軟體式還原系統,影響執行速度小。

本文主要是探討windows 教育筆電還原方式。

公用行動載具,目前常用有ios ipad ,android 平板,chrome book,windows 筆電。以ios ipad、chrome book、windows 教育筆電為主。螢幕尺寸約10吋上下。ios ipad、chrome book的強項是遠端大量部署及管理方便,與雲端空間搭配使用。windows 教育筆電則在師生使用經驗上可以無縫接軌,操作方式及使用的軟體, 跟windows桌上型電腦、筆電完全一樣,在高中職,做報告、簡報,寫作業、小論文,文書處理,或執行繪圖軟體,或執行影音軟體,做學習歷程,自主學習...,windows 教育筆電有其長處。chrome book的記憶體、固態硬碟較小,使用時須連上wifi,依賴雲端空間。windows 教育筆電64GB固態硬碟太小,執行windows空間很緊張,不夠用,選128GB以上較合適,ram最少4GB,已有廠商推出8GB RAM、256GB固態硬碟教育筆電。chrome book及windows 教育筆電都強調軍規級耐用防摔,鍵盤不易被拔除。chrome book及windows 教育筆電故障,維修點多,零件較易取得。windows 教育筆電在遠端大量部署及管理上,支援度須優化及普及。windows 教育筆電沒網路時,做報告、簡報,寫作業、小論文,文書處理,或執行繪圖軟體,或執行影音軟體,做學習歷程..仍可以進行。windows 教育筆電另有一個優點,可以安裝軟體式還原系統,每次重開機就還原,使用者可以臨時安裝需要的軟體,重開機就清除,windows 教育筆電關閉還原功能可以添加軟體及改設定,這項操作如沒有遠端大量管理輔助,就須逐台安裝設定,量很大時,很耗時間,因windows系統,安裝office及常用軟體,教學用軟體之後,變動較少,可以先做一台有完整需求的,做成映像檔,再還原部署,第一次做較耗時,平時管理大概只需於使用後放入充電車。

本文以windows 教育筆電安裝Windows 11/10專業版(pro)/家用版,安裝UWF還原系統為例

win10uwf_eml檔下載點
解壓縮下載的檔案。可以依自己需求修改,例如,是否更新windows或有防毒功能。
解壓縮的win10uwf睿eml-cdercder\win10uwf和eml-cdercder\更新过文件其它未动\UWFELM_10_x64\$OEM$\$1資料夾,是複製到c:\
解壓縮的win10uwf睿eml-cdercder\win10uwf和eml-cdercder\更新过文件其它未动\UWFELM_10_x64\$OEM$\$$資料夾,是複製到c:\windows
為了方便操作可以整合$OEM$\$1資料夾及$OEM$\$$資料夾成為一個UWFELM_10_x64資料夾

修改UWFELM_10_x64\Windows\Setup\Scripts檔案
因開機碟是C,就不用修改ELM.reg的下列二項註冊值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MMC\SnapIns
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellCompatibility\InboxApp

修改SetupComplete.cmd檔

@echo off
cd /d "%~dp0"
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
cd /d "%~dp0"

@echo off
pushd "%~dp0"

%windir%\System32\regsvr32.exe -s %windir%\system32\wbem\uwfwmi.dll
%windir%\System32\wbem\mofcomp.exe %windir%\system32\wbem\uwfwmi.mof
%windir%\SysWOW64\regsvr32.exe -s %windir%\SysWOW64\wbem\uwfwmi.dll
regedit -s UWF.reg
regedit -s ELM.reg

:如要將 Windows Defender排除還原, 在 regedit -s ELM.reg 和 :degragment 中間加入下列指令, 將 Windows Defender 相關檔案及資料夾排除還原,因不排除還原,將行首加:
:uwfmgr filter enable
:uwfmgr volume protect %SystemDrive% 
:uwfmgr file add-exclusion "%SystemDrive%\Program Files\Windows Defender"
:uwfmgr file add-exclusion "%SystemDrive%\Windows\WindowsUpdate.log"
:uwfmgr file add-exclusion "%SystemDrive%\Windows\Temp\MpCmdRun.log"
:uwfmgr file add-exclusion "%SystemDrive%\ProgramData\Microsoft\Windows Defender" 
:uwfmgr registry add-exclusion "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender"
:uwfmgr volume unprotect %SystemDrive%
:uwfmgr filter disable

:degragment 
sc config defragsvc start=disabled

:Superfetch
sc config SysMain start=disabled
:UWF 預設停用 PageFile/Restore/Prefetcher/Superfetch/Defragment

:Windows Defender Network Inspection,如停用Windows Defender就沒有內建防毒功能,建議保持預設開啟狀態,停用Windows update,不更新Windows Defender,可有基本病毒防護功能。
:sc config WdNisSvc start=disabled

:不停用Windows Defender
:sc config windefend start=disabled

regedit /s Disable-Restore-Paging-Prefetcher.reg

powercfg -h off

:Use this if automatic repair occurs upon boot. 
:bcdedit /set {current} bootstatuspolicy ignoreallfailures

regedit /s Clean.reg

shutdown /r /t 10 /c "10秒後重開機"
exit


Windows 10 專業版(pro)UWF還原系統,請參考

關於uwf移植至windows 10/11的文章,請參考

更新windows 11
先設定網路,如不是自動取得IP,須先設定IP。
開始->設定

->windows update->進階選項

開啟 接收其他microsoft 產品的更新->windows update

->檢查更新
Windows 11的線上更新

重開機就還原的電腦,須關閉的項目:
1.開機就啟動的程式,只留必要的,例如防毒,其餘的就關閉。
->開始->設定

->啟動

只留防毒,其餘的都關閉

2.工作排程器內,有列入排程的全部停用。
->控制台->windows工具

->工作排程器

->工作排程器程式庫->在要停用的工作排程上按滑鼠右鍵->停用

建議全部停用

3.控制台內電源選項,關螢幕省電、睡眠、休眠。
->控制台->電源選項

->選擇按下電源按鈕時的行為

->變更目前無法使用的設定
電源、睡眠按鈕及筆記電腦螢幕設定
電池使用中,一般電源,都設 不進行動作
關機設定,打勾全部取消 
->儲存設定
4.安裝的程式如有 自動檢查更新 功能,請個別取消,例如:java

5.以系統管理員執行 Powercfg -h off
->在 開始 按滑鼠右鍵->windows 終端機(系統管理員)

 Powercfg -h off
正確執行時不會顯示任何訊訊息

6.使用優化軟體關啟動項,例如 wisecare
->系統最佳化->啟動項管理->把要關的關啟動項打勾->加速

被關掉的啟動項,如要恢復,按 啟動項 ->於 動作  點要開啟項目

執行 移除残留.bat ,將wisecare執行後残留移除
@ECHO OFF&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&EXIT)

schtasks /delete /tn "Wise Care 365.job" /f  >NUL 2>NUL
schtasks /delete /tn "Wise Turbo Checker.job" /f  >NUL 2>NUL 
rd/s/q "%AppData%\Wise Care 365"2>NUL
reg delete "HKLM\SOFTWARE\WiseCleaner\WiseCare365" /f >NUL 2>NUL 
reg delete "HKLM\SOFTWARE\WiseCleaner\WiseCare365" /f /reg:32 >NUL 2>NUL
reg delete "HKLM\SOFTWARE\Classes\.wskn" /f >NUL 2>NUL
reg delete "HKLM\SOFTWARE\Classes\W365.SkinFile" /f >NUL 2>NUL 
reg delete "HKLM\SOFTWARE\Classes\*\shell\WShredFile" /f >NUL 2>NUL
reg delete "HKLM\SOFTWARE\Classes\Folder\shell\WShredFile" /f >NUL 2>NUL
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WiseHDInfo" /f >NUL 2>NUL
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WiseRegNotify" /f >NUL 2>NUL
reg delete "HKLM\SYSTEM\CurrentControlSet\Services\WiseBootAssistant" /f >NUL 2>NUL
reg delete "HKLM\SOFTWARE\Microsoft\Tracing\WiseTray_RASAPI32" /f >NUL 2>NUL
reg del
ete "HKLM\SOFTWARE\Classes\CLSID\{7BEFAB15-7B27-4361-80E1-3B61C9E06392}" /f >NUL 2>NUL
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WiseCleaner" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WiseCleaner" /f
ECHO.&ECHO 清除完成
TIMEOUT /t 2 >NUL&EXIT

經實測要再加以下二行才能把註冊檔WiseCleaner清掉
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WiseCleaner" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WiseCleaner" /f

7.停止windows 10/11更新
下載stopupdates10portable,執行StopUpdates10.exe

->Help->Language->Chinese Traditional


->停止 windows updates





停止windows更新, 執行 windows updates時發生錯誤。

桌面背景提醒電腦有裝還原系統

uwf設定、啟用、停用批次檔及說明

readmeuwf.txt
uwf_all_enable.cmd  設定啟用還原功能,須以 系統管理員身分 執行,須重開機才生效。
以下三個檔,須先執行過uwf_all_enable.cmd,且重開機生效後執行。 
uwf_disable_only.cmd 停用還原功能,須 以系統管理員身分 執行,須重開機才生效。
uwf_enable_only.cmd  啟用還原功能,須 以系統管理員身分 執行,須重開機才生效。
uwf_get_config_only.cmd 查詢還原功能是啟用或停用,須 以系統管理員身分 執行。

uwf_all_enable.cmd檔修改說明:
rem SysCeo資料夾是萬用還原執行驅動總裁殘留資料夾,沒在用驅動總裁可刪除
rd "C:\Program Files (x86)\SysCeo" /Q /S
rem 預設是用 RAM當作暫存區,改用磁碟當作暫存區
uwfmgr overlay Set-Type DISK
rem
rem 如要設定暫存大小是10G,請將以下三行開頭rem移除
rem uwfmgr overlay set-size 10240
rem uwfmgr overlay set-warningthreshold 10000
rem uwfmgr overlay set-criticalthreshold 10240
rem
rem 如要設定暫存大小是15G,請將以下三行uwfmgr指令前rem移除
rem 設定暫存大小為 15360 MB (15G)
rem uwfmgr overlay set-size 15360
rem 設定目前工作階段,驅動程式會發出警告通知的覆疊大小,以 mb 為單位,15120M
rem uwfmgr overlay set-warningthreshold 15120
rem 設定目前工作階段,驅動程式會發出重大通知的覆疊大小,以 mb 為單位,15360M
rem uwfmgr overlay set-criticalthreshold 15360
rem
rem 設定暫存大小20G,如要設定不同暫存大小,請將以下三行開頭加上rem,不執行。
uwfmgr overlay set-size 20480
uwfmgr overlay set-warningthreshold 19456
uwfmgr overlay set-criticalthreshold 20480
rem
rem 
rem 設定要保護磁碟為C碟
uwfmgr volume protect c:
rem 如有要讓uwf啟用後可以更新Windows,就將下面一行rem移除,因是啟用還原系統,不建議讓Windows更新,以避免干擾使用者操作。
rem uwfmgr servicing Update-Windows
rem 啟用保護,重開機
uwfmgr filter enable

uwf_all_enable.cmd  檔內容
@echo off
cd /d "%~dp0"
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
cd /d "%~dp0"

rd "C:\Program Files (x86)\SysCeo" /Q /S
rem 預設是用 RAM當作暫存區,改用磁碟當作暫存區
uwfmgr overlay Set-Type DISK
rem
rem 設定暫存大小10G
rem uwfmgr overlay set-size 10240
rem uwfmgr overlay set-warningthreshold 10000
rem uwfmgr overlay set-criticalthreshold 10240
rem
rem 設定暫存大小15G
rem 設定暫存大小為 15360 MB (15G),如要設10G則是10240
rem uwfmgr overlay set-size 15360
rem 設定目前工作階段,驅動程式會發出警告通知的覆疊大小,以 mb 為單位,15120M
rem uwfmgr overlay set-warningthreshold 15120
rem 設定目前工作階段,驅動程式會發出重大通知的覆疊大小,以 mb 為單位,15360M
rem uwfmgr overlay set-criticalthreshold 15360
rem
rem 設定暫存大小20G 
uwfmgr overlay set-size 20480
uwfmgr overlay set-warningthreshold 19456
uwfmgr overlay set-criticalthreshold 20480
rem
rem 
rem 設定要保護磁碟為C碟
uwfmgr volume protect c:
rem 如有要讓uwf啟用後可以更新Windows,就將下面一行rem移除,因是啟用還原系統,不建議讓Windows更新,以避免干擾使用者操作。
rem uwfmgr servicing Update-Windows
rem 啟用保護
uwfmgr filter enable
shutdown /r /t 10 /c "uwf設定完成,還原功能啟用,10秒後重開機"
exit

uwf_disable_only.cmd 檔內容
@echo off
cd /d "%~dp0"
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
cd /d "%~dp0"
:degragment
:sc config defragsvc start=demand

:Superfetch
:sc config SysMain start=demand
uwfmgr filter disable
shutdown /r /t 10 /c "關閉還原功能,10秒後重開機"
exit

uwf_enable_only.cmd 檔內容
@echo off
cd /d "%~dp0"
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
cd /d "%~dp0"

:degragment
:sc config defragsvc start=disabled

:Superfetch
:sc config SysMain start=disabled

uwfmgr filter enable
shutdown /r /t 10 /c "啟用還原功能,10秒後重開機"
exit

uwf_get_config_only.cmd  檔內容
@echo off
cd /d "%~dp0"
CLS
ECHO.
ECHO =============================
ECHO Running Admin Shell
ECHO =============================

:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion

:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************

ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B

:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
REM 資料來源 https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator%E3%80%91%EF%BC%8C
cd /d "%~dp0"

uwfmgr get-config
pause

uwf.cmd 設定及啟用UWF並將UWF所使用檔案及資料夾複製到c:\ProgramData\Microsoft\Windows資料夾

@echo off
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /f /v One_Click_Installer /t REG_SZ /d "C:\ProgramData\Microsoft\Windows\win10uwf\uwf_all_enable.cmd"
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WiseCleaner" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\WiseCleaner" /f
cd /d "%~dp0"
md C:\ProgramData\Microsoft\Windows\UWFELM_10_x64
md C:\ProgramData\Microsoft\Windows\win10uwf
cd UWFELM_10_x64
xcopy *.*  C:\ /y /e /q
xcopy *.*  C:\ProgramData\Microsoft\Windows\UWFELM_10_x64 /y /e /q  
cd ..
cd win10uwf
xcopy *.*  C:\ProgramData\Microsoft\Windows\win10uwf /y /e /q 
cd ..
c:
cd\
cd C:\ProgramData\Microsoft\Windows\UWFELM_10_x64\Windows\Setup\Scripts
SetupComplete.cmd
exit

執行uwf.cmd 

執行uwf_get_config_only.cmd 查詢UWF是否已啟用,下圖是已啟用

執行uwf_get_config_only.cmd 查詢UWF是否已啟用,下圖是已停用

執行uwf_disable_only.cmd  停用(關閉)還原功能

執行uwf_enable_only.cmd啟用還原功能

設定好UWFELM,啟用UWF還原功能後,如重新開啟windows update更新,可以下載更新檔,但更新會發生意外狀況, 復原變更。因此,要順利更新windows,須在設定UWFELM之前,在本文是執行uwf.cmd 之前。

啟用UWF還原功能後,windows內建防毒功能仍提供保護功能。


2022年2月17日 星期四

二月上旬的林初埤木棉道

林初埤木棉花的花期約在每年2月下旬到3月中旬,吸引大批賞花遊客,整條木棉道,人山人海。二月上旬黃昏,路過白河,先一睹木棉花含苞中,一人包場欣賞意境。





林初埤木棉花王(在木棉道北邊)



善化糖廠百年老樟樹

 這棵樟樹,位於善化糖廠冰品部旁親水休憩公園北邊,善糖興起、轉型,經歷二次雷劈,留下烙印,仍屹立不搖。

2022年2月15日 星期二

白河水田夕陽

 黃昏路過台南白河,碰上種稻水田插秧期,夕陽映在已插秧、未插秧水稻田,形成一幅季節性限時美景,欣賞時間短暫,太陽很快就下山了。






2022年2月14日 星期一

系統封裝失敗,系統封裝與綜合驅動程式包更改首頁及顯示語言的解決方案

本文以SC系统封装工具最新版及驅動總裁drvceo最新版為例
系統封裝失敗畫面如下:
封裝錯誤診斷檔案存於桌面

開啟setuperr.log查看造成封裝錯誤的原因


ScRun22.0205.0241.44.log
========================= Begin =========================
2022-02-05 02:41:44 ReadSysinfo
2022-02-05 02:41:44 LangsPath:C:\Windows\AppPatch\Sccht.sc
2022-02-05 02:41:44 ScdataPath:C:\scpt_win10_64\Scset.ini
========================= Basic =========================
By:Noime E-Mail:noime@qq.com QQ:562628018
驅動總裁官方網站:www.drvceo.com
系統總裁官方網站:www.sysceo.com
系統總裁聯盟官方網站:www.sysceo.cn
CPUCount:8
系統資訊:Windows 11 SP0(Ver 10.0.22000.469, x64)
NT版本:10.0.22000.469
系統語言:中文台灣繁體
運行環境:桌面環境
程式版本:3.0.0.136 Bit:x86
程式路徑:C:\scpt_win10_64\|C:\scpt_win10_64\Scpt.exe
========================== Run ==========================
2022-02-05 02:41:45 Load Controls
2022-02-05 02:41:46 [Server] Connection server failed
2022-02-05 02:41:51 [Sysprep.NT6.Type] Basic
2022-02-05 02:41:51 [Sysprep.ClearOldinfo] Systeminfo_NT6
2022-02-05 02:41:51 [Sysprep.WriteUnattend] Begin
2022-02-05 02:41:51 [Sysprep.WriteUnattend] SkipOOBE True
2022-02-05 02:41:51 [Sysprep.WriteUnattend] End
2022-02-05 02:41:51 [Sysprep.Systemsettings] Begin
2022-02-05 02:41:51 [Sysprep.Systemsettings] Driver
2022-02-05 02:41:51 [Sysprep.Systemsettings] Driver Path
2022-02-05 02:41:51 [Sysprep.Systemsettings] Network
2022-02-05 02:41:52 [Sysprep.Systemsettings] ClearReg
2022-02-05 02:41:52 [Sysprep.Systemsettings] Savesysset
2022-02-05 02:41:52 [Sysprep.Systemsettings] Saveinput
2022-02-05 02:41:52 [Sysprep.Systemsettings] Get-DefaultAppAssociations
2022-02-05 02:41:54 [Sysprep.Systemsettings] Get-StartLayout
2022-02-05 02:41:58 [Sysprep.Systemsettings] GPedit Begin
2022-02-05 02:41:58 [Sysprep.Systemsettings] GPedit End
2022-02-05 02:41:58 [Sysprep.SynchronizationInfo] Begin
2022-02-05 02:41:58 [Sysprep.SynchronizationInfo] End
2022-02-05 02:41:58 [Sysprep.Systemsettings] End
2022-02-05 02:41:58 [Sysprep.LoadsrsDrivers] Begin
2022-02-05 02:41:58 [Sysprep.LoadsrsDrivers] OS Win10 | Win10 | -win10x64
2022-02-05 02:41:58 [Sysprep.LoadsrsDrivers] Cmdline Nil | -win10x64
2022-02-05 02:41:58 [Sysprep.LoadsrsDrivers] End
2022-02-05 02:41:58 [Sysprep.Run] Begin
2022-02-05 02:42:00 [Sysprep.Run] Execution Failure

setuperr.log
造成封裝錯情況之一,OneDrive造成的
2022-02-05 02:42:00, Error                 SYSPRP Package Microsoft.OneDriveSync_21220.1024.5.0_neutral__8wekyb3d8bbwe was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
2022-02-05 02:42:00, Error                 SYSPRP Failed to remove apps for the current user: 0x80073cf2.
2022-02-05 02:42:00, Error                 SYSPRP Exit code of RemoveAllApps thread was 0x3cf2.
2022-02-05 02:42:00, Error                 SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'SysprepGeneralizeValidate' from C:\Windows\System32\AppxSysprep.dll; dwRet = 0x3cf2
2022-02-05 02:42:00, Error                 SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x3cf2
2022-02-05 02:42:00, Error                 SYSPRP RunPlatformActions:Failed while validating Sysprep session actions; dwRet = 0x3cf2
2022-02-05 02:42:00, Error      [0x0f0070] SYSPRP RunDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x3cf2
2022-02-05 02:42:00, Error      [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80073cf2

造成封裝錯情況之二,Spotify造成的
2022-02-05 12:53:49, Error                 SYSPRP Package SpotifyAB.SpotifyMusic_1.178.765.0_x86__zpdnekdrzrea0 was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
2022-02-05 12:53:49, Error                 SYSPRP Failed to remove apps for the current user: 0x80073cf2.
2022-02-05 12:53:49, Error                 SYSPRP Exit code of RemoveAllApps thread was 0x3cf2.
2022-02-05 12:53:49, Error                 SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'SysprepGeneralizeValidate' from C:\Windows\System32\AppxSysprep.dll; dwRet = 0x3cf2
2022-02-05 12:53:49, Error                 SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x3cf2
2022-02-05 12:53:49, Error                 SYSPRP RunPlatformActions:Failed while validating Sysprep session actions; dwRet = 0x3cf2
2022-02-05 12:53:49, Error      [0x0f0070] SYSPRP RunDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x3cf2
2022-02-05 12:53:49, Error      [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80073cf2

造成封裝錯情況之三,Disney造成的
2022-02-05 12:55:39, Error                 SYSPRP Package Disney.37853FC22B2CE_1.23.4.0_x64__6rarf9sa4v8jt was installed for a user, but not provisioned for all users. This package will not function properly in the sysprep image.
2022-02-05 12:55:39, Error                 SYSPRP Failed to remove apps for the current user: 0x80073cf2.
2022-02-05 12:55:39, Error                 SYSPRP Exit code of RemoveAllApps thread was 0x3cf2.
2022-02-05 12:55:39, Error                 SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'SysprepGeneralizeValidate' from C:\Windows\System32\AppxSysprep.dll; dwRet = 0x3cf2
2022-02-05 12:55:39, Error                 SYSPRP SysprepSession::Validate: Error in validating actions from C:\Windows\System32\Sysprep\ActionFiles\Generalize.xml; dwRet = 0x3cf2
2022-02-05 12:55:39, Error                 SYSPRP RunPlatformActions:Failed while validating Sysprep session actions; dwRet = 0x3cf2
2022-02-05 12:55:39, Error      [0x0f0070] SYSPRP RunDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = 0x3cf2
2022-02-05 12:55:39, Error      [0x0f00d8] SYSPRP WinMain:Hit failure while pre-validate sysprep generalize internal providers; hr = 0x80073cf2

目前帳戶administrator,
於程式和功能移除OneDrive
Spotify及Disney,於「已釘選」可移除

如安裝的帳戶是user,在user的程式和功能移除OneDrive,於「已釘選」移除Spotify及Disney。

切換至user帳戶操作
開始->右鍵->電腦管理

->本機使用者和群組->使用者->administrator->點選 帳戶已停用->套用->確定

user->點選 取消 帳戶已停用->套用->確定

開始->重新啟動

在user的程式和功能移除OneDrive,於「已釘選」移除Spotify及Disney。

或執行批次檔removeapp.cmd,移除造成封裝失敗的app
PowerShell -Command "Get-AppxPackage Microsoft.OneDriveSync* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage Disney.* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage SpotifyAB.* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage Microsoft.LanguageExperiencePack* | Remove-AppxPackage"
pause

啟用administrator帳戶

停用user帳戶

重新啟動登入administrator帳戶

於administrator帳戶,執行批次檔removeapp.cmd,移除造成封裝失敗的app
PowerShell -Command "Get-AppxPackage Microsoft.OneDriveSync* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage Disney.* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage SpotifyAB.* | Remove-AppxPackage"
PowerShell -Command "Get-AppxPackage Microsoft.LanguageExperiencePack* | Remove-AppxPackage"
pause

重新執行封裝程式
看到下圖sysprep畫面,可以順利封裝了。

封裝完成。
切記!要設定從PE開機,備份封裝完成的windows系統。
封裝windows10/11心得:
1.全程停用網路,windows 也不離線更新,office可離線更新,這樣windows10/11可以順利封裝。
2.先停用網路,安裝windows ,office離線更新完成後,開網路線上更新windows及office,更新完成,立即停用網路封裝windows,這樣windows10/11封裝成功機率高。如封裝失敗,移除造成封裝失敗的app,再封裝成功機率高。
3.全程開網路,安裝windows 、office並上網更新,封裝失敗機率高。如封裝失敗,移除造成封裝失敗的app,再封裝成功機率較低。
如要追求較完美封裝windows 10/11,不移除程式,線上更新windows 、office,建議先停用網路,安裝windows,office離線更新,先備份起來。開網路線上更新windows及office,更新完成,立即停用網路封裝windows,

系統封裝與綜合驅動程式包更改首頁及顯示語言畫面
開啟internet explorer畫面,首頁畫面被更改

開啟edge畫面,首頁被更改

開啟 edge首頁被更改後,導向新網頁
查看edge操作介面顯示語言,被更改了

edge操作介面語言,沒有繁體中文

瀏覽繁體中文網頁可正常顯示
設定及其他 功能表是簡體 

系統封裝與綜合驅動程式包更改首頁及顯示語言的解決方案:
1.手動更改EDGE語言及重設設定。
設定及其他->設置

->語言

->新增語言
->點選 中文(繁體)
->添加

->以這種語言顯示

->重啟

設定及其他 功能表改為繁體了。

->重設設定

將設定還原為其預設值  >,重設
經過重新設定語言及重設設定之後,即可解決edge首頁及顯示語言被更改問題。

2.製作萬用還原的理念是希望儘可能自動執行及自動設定,為了解決還原後首頁及顯示語言被更改問題,曾試過改設定檔或註冊檔,未找到完整解決方式。 以使用者帳戶administrator為例,測試edge、google chrome安裝完成,結束 google chrome及edge工作,分別備份c:\Users\Administrator\AppData\Local\Google\Chrome的user data資料夾及c:\Users\Administrator\AppData\Local\Microsoft\Edge的user data資料夾,於萬用還原部署完成,第一次登入桌面時,執行批次檔指令,結束 google chrome及edge工作,分別刪除google chrome及edge的user data資料夾,再將原先備份的google chrome、edge的user data資料夾,分別解壓縮至c:\Users\Administrator\AppData\Local\Google\Chrome的user data資料夾及c:\Users\Administrator\AppData\Local\Microsoft\Edge的user data資料夾。

結束 google chrome及edge工作的批次檔指令
taskkill /f /im msedge.exe
taskkill /f /im chrome.exe
taskkill /f /im MicrosoftEdgeUpdate.exe

清除360度瀏覽器殘留註冊檔機碼的批次檔指令
reg delete "HKCU\Software\360Chromex" /f
reg delete "HKEY_USERS\S-1-5-21-1964147999-301648238-3903174671-500\Software\360Chromex" /f

分別刪除google chrome及edge的user data資料夾,再將原先備份的google chrome、edge的user data資料夾,分別解壓縮至google chrome及edge的user data資料夾的批次檔指令
cd /d "%~dp0"
C:\Windows\System32\attrib "c:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data" -s -r -h  /s /d
C:\Windows\System32\attrib "c:\Users\Administrator\AppData\Local\Google\Chrome\User Data" -s -r -h  /s /d
C:\Windows\System32\attrib "C:\Users\Administrator\AppData\Local\360Chrome" -s -r -h  /s /d
rd "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data" /Q /S
md  "C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data"
rd "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data" /Q /S
md  "C:\Users\Administrator\AppData\Local\Google\Chrome\User Data"
rd "C:\Users\Administrator\AppData\Local\360Chrome" /Q /S
"C:\Program Files\7-Zip\7z.exe" x UserDatae.7z -y -aos -o"c:\Users\Administrator\AppData\Local\Microsoft\Edge"
"C:\Program Files\7-Zip\7z.exe" x UserDatag.7z -y -aos -o"c:\Users\Administrator\AppData\Local\Google\Chrome"

因 google chrome及edge還原的user data資料夾是剛安裝完成時備份的,所以,可以解決首頁及顯示語言於系統封裝或安裝綜合驅動程式包時被更改問題。 

注意:
1.要結束 google chrome及edge工作,才能完整備份user data資料夾。備份前先重設,以減少備份檔大小。
2.萬用還原部署完成,第一次登入桌面時,要先結束 google chrome及edge工作,才能刪除、建立、還原user data資料夾。