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啟用還原功能
