@echo off
chcp 65001 >nul
title Windows10 System Optimization Tool
:: Administrator privileges check
net session >nul 2>&1
if %errorLevel% neq 0 (
echo ========================================
echo Please run as Administrator
echo ========================================
pause
exit
)
:: Set current directory
cd /d "%~dp0"
:MAIN_MENU
cls
echo.
echo ========================================
echo Windows10 System Optimization Tool
echo ========================================
echo.
echo [1] Full Auto Optimization (Recommended)
echo [2] System Performance Optimization
echo [3] Network Optimization
echo [4] Document Performance Optimization
echo [5] System Cleanup and Maintenance
echo [6] View Optimization Log
echo [7] Restore Original Settings
echo [8] Exit
echo.
set /p choice=Please choose [1-8]:
if "%choice%"=="1" (
call :RunOptimization "AUTO" "Full Auto Optimization"
)
if "%choice%"=="2" (
call :RunOptimization "PERFORMANCE" "System Performance Optimization"
)
if "%choice%"=="3" (
call :RunOptimization "NETWORK" "Network Optimization"
)
if "%choice%"=="4" (
call :RunOptimization "DOCUMENT" "Document Performance Optimization"
)
if "%choice%"=="5" (
call :RunOptimization "CLEANUP" "System Cleanup and Maintenance"
)
if "%choice%"=="6" (
if exist "Windows10OptimizationLog.txt" (
notepad "Windows10OptimizationLog.txt"
) else (
echo No optimization log found
pause
)
goto MAIN_MENU
)
if "%choice%"=="7" (
call :RestoreConfig
)
if "%choice%"=="8" (
exit
)
goto MAIN_MENU
:RunOptimization
cls
echo.
echo Executing: %~2
echo Please wait...
echo.
PowerShell -ExecutionPolicy Bypass -File "%~dp0Windows10优化.ps1" -Mode "%~1"
echo.
echo Operation completed!
pause
goto MAIN_MENU
:RestoreConfig
cls
echo.
echo ========================================
echo Restore Original Settings
echo ========================================
echo.
echo Warning: This will restore system settings
echo to their original state before optimization
echo Only use if you experience issues after optimization
echo.
set /p confirm="Are you sure you want to restore? (Y/N): "
if /i not "%confirm%"=="Y" (
goto MAIN_MENU
)
echo.
echo Restoring original settings...
PowerShell -ExecutionPolicy Bypass -File "%~dp0Windows10优化.ps1" -Mode "RESTORE"
echo.
echo Restoration completed!
pause
goto MAIN_MENU
保存为 Windows10OptimizationTool.bat
param([string]$Mode = "AUTO")
# Initialize paths
$LogPath = "Windows10OptimizationLog.txt"
$BackupPath = "Windows10OptimizationBackup.json"
$startTime = Get-Date
$timestamp = $startTime.ToString("yyyy-MM-dd HH:mm:ss")
# Backup data structure
$BackupData = @{
Timestamp = $timestamp
OriginalSettings = @()
}
# Log function
function Write-Log {
param([string]$Message, [string]$Type = "INFO")
$logTime = Get-Date -Format "HH:mm:ss"
$logEntry = "[$logTime] [$Type] $Message"
Write-Host $logEntry -ForegroundColor @{ "INFO" = "Gray"; "SUCCESS" = "Green"; "WARNING" = "Yellow"; "ERROR" = "Red" }[$Type]
Add-Content -Path $LogPath -Value $logEntry -Encoding UTF8
}
# Backup function
function Backup-Setting {
param([string]$Name, [string]$Type, [string]$Path, $OriginalValue, [string]$Description)
$backupEntry = @{
Name = $Name
Type = $Type
Path = $Path
OriginalValue = $OriginalValue
Description = $Description
BackupTime = $timestamp
}
$BackupData.OriginalSettings += $backupEntry
Write-Log "Backed up setting: $Description" "INFO"
}
# Safe optimization function (with backup)
function Invoke-SafeOptimization {
param(
[scriptblock]$ScriptBlock,
[scriptblock]$BackupScript,
[string]$SuccessMessage,
[string]$WarningMessage = "Operation skipped"
)
try {
# Execute backup
if ($BackupScript -and $Mode -ne "RESTORE") {
& $BackupScript
}
# Execute optimization (skip in restore mode)
if ($Mode -ne "RESTORE") {
& $ScriptBlock
}
if ($Mode -ne "RESTORE") {
Write-Log $SuccessMessage "SUCCESS"
}
return $true
} catch {
Write-Log $WarningMessage "WARNING"
return $false
}
}
# Restore function
function Restore-OriginalSettings {
Write-Log "Starting to restore original settings..." "INFO"
if (-not (Test-Path $BackupPath)) {
Write-Log "Backup file not found, cannot restore" "ERROR"
return
}
try {
$backup = Get-Content $BackupPath | ConvertFrom-Json
foreach ($setting in $backup.OriginalSettings) {
try {
switch ($setting.Type) {
"Registry" {
if (Test-Path $setting.Path) {
if ($setting.OriginalValue -eq $null) {
Remove-ItemProperty -Path $setting.Path -Name $setting.Name -Force -ErrorAction Stop
Write-Log "Restored registry: $($setting.Description)" "SUCCESS"
} else {
Set-ItemProperty -Path $setting.Path -Name $setting.Name -Value $setting.OriginalValue -ErrorAction Stop
Write-Log "Restored registry: $($setting.Description)" "SUCCESS"
}
}
}
"Service" {
Set-Service -Name $setting.Name -StartupType $setting.OriginalValue -ErrorAction Stop
Write-Log "Restored service: $($setting.Description)" "SUCCESS"
}
"PowerPlan" {
powercfg -setactive $setting.OriginalValue
Write-Log "Restored power plan" "SUCCESS"
}
}
} catch {
Write-Log "Restore failed: $($setting.Description)" "WARNING"
}
}
Write-Log "Original settings restoration completed" "SUCCESS"
} catch {
Write-Log "Error during restoration: $($_.Exception.Message)" "ERROR"
}
}
# WPS optimization function
function Optimize-WPSPerformance {
Write-Log "Starting WPS performance optimization..." "INFO"
# WPS registry paths
$wpsPaths = @(
"HKCU:\Software\Kingsoft\Office",
"HKCU:\Software\Kingsoft\WPS",
"HKCU:\Software\Kingsoft\WPS Cloud Files"
)
# 1. Disable WPS cloud services to improve performance
Invoke-SafeOptimization -ScriptBlock {
foreach ($path in $wpsPaths) {
if (Test-Path $path) {
# Disable auto cloud sync
Set-ItemProperty -Path $path -Name "EnableCloudService" -Value 0 -ErrorAction SilentlyContinue
Set-ItemProperty -Path $path -Name "AutoSync" -Value 0 -ErrorAction SilentlyContinue
Set-ItemProperty -Path $path -Name "BackgroundSave" -Value 0 -ErrorAction SilentlyContinue
}
}
# Specific WPS settings
$wpsSpecificPaths = @(
"HKCU:\Software\Kingsoft\Office\6.0\common",
"HKCU:\Software\Kingsoft\Office\6.0\wps",
"HKCU:\Software\Kingsoft\Office\6.0\et", # WPS表格
"HKCU:\Software\Kingsoft\Office\6.0\wpp" # WPS演示
)
foreach ($path in $wpsSpecificPaths) {
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Disable hardware acceleration
Set-ItemProperty -Path $path -Name "EnableGPU" -Value 0 -ErrorAction SilentlyContinue
Set-ItemProperty -Path $path -Name "EnableDirect2D" -Value 0 -ErrorAction SilentlyContinue
# Disable animations
Set-ItemProperty -Path $path -Name "EnableAnimation" -Value 0 -ErrorAction SilentlyContinue
}
} -BackupScript {
# Backup current WPS settings
foreach ($path in $wpsPaths) {
if (Test-Path $path) {
$cloudService = Get-ItemProperty -Path $path -Name "EnableCloudService" -ErrorAction SilentlyContinue
$autoSync = Get-ItemProperty -Path $path -Name "AutoSync" -ErrorAction SilentlyContinue
$backgroundSave = Get-ItemProperty -Path $path -Name "BackgroundSave" -ErrorAction SilentlyContinue
if ($cloudService) {
Backup-Setting -Name "EnableCloudService" -Type "Registry" -Path $path -OriginalValue $cloudService.EnableCloudService -Description "WPS Cloud Service Setting"
}
if ($autoSync) {
Backup-Setting -Name "AutoSync" -Type "Registry" -Path $path -OriginalValue $autoSync.AutoSync -Description "WPS Auto Sync Setting"
}
if ($backgroundSave) {
Backup-Setting -Name "BackgroundSave" -Type "Registry" -Path $path -OriginalValue $backgroundSave.BackgroundSave -Description "WPS Background Save Setting"
}
}
}
} -SuccessMessage "WPS cloud services and animations disabled"
# 2. Optimize WPS startup and document loading
Invoke-SafeOptimization -ScriptBlock {
$wpsStartupPath = "HKCU:\Software\Kingsoft\Office\6.0\common"
if (-not (Test-Path $wpsStartupPath)) {
New-Item -Path $wpsStartupPath -Force | Out-Null
}
# Disable startup splash screen
Set-ItemProperty -Path $wpsStartupPath -Name "ShowSplash" -Value 0 -ErrorAction SilentlyContinue
# Disable recent document list
Set-ItemProperty -Path $wpsStartupPath -Name "ShowRecentDocuments" -Value 0 -ErrorAction SilentlyContinue
# Disable tip of the day
Set-ItemProperty -Path $wpsStartupPath -Name "ShowTip" -Value 0 -ErrorAction SilentlyContinue
} -SuccessMessage "WPS startup optimized"
Write-Log "WPS performance optimization completed" "SUCCESS"
}
# Document performance optimization (with backup)
function Optimize-DocumentPerformance {
Write-Log "Starting document performance optimization..." "INFO"
# 1. Optimize File Explorer - disable thumbnails
Invoke-SafeOptimization -ScriptBlock {
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -Value 1 -ErrorAction Stop
} -BackupScript {
$original = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -ErrorAction SilentlyContinue
Backup-Setting -Name "IconsOnly" -Type "Registry" -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -OriginalValue $original.IconsOnly -Description "File Explorer icon display settings"
} -SuccessMessage "File Explorer display optimized"
# 2. Disable unnecessary visual effects
Invoke-SafeOptimization -ScriptBlock {
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Value 2 -ErrorAction Stop
} -BackupScript {
$original = Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -ErrorAction SilentlyContinue
Backup-Setting -Name "VisualFXSetting" -Type "Registry" -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -OriginalValue $original.VisualFXSetting -Description "Visual effects settings"
} -SuccessMessage "Visual effects optimized"
# 3. Adjust Windows Search indexing
Invoke-SafeOptimization -ScriptBlock {
Set-Service -Name "WSearch" -StartupType "Manual" -ErrorAction Stop
Stop-Service -Name "WSearch" -Force -ErrorAction Stop
} -BackupScript {
$service = Get-Service -Name "WSearch" -ErrorAction SilentlyContinue
$startType = (Get-WmiObject -Class Win32_Service -Filter "Name='WSearch'").StartMode
Backup-Setting -Name "WSearch" -Type "Service" -Path "" -OriginalValue $startType -Description "Windows Search service"
} -SuccessMessage "Search indexing service optimized"
# 4. Adjust SysMain service
Invoke-SafeOptimization -ScriptBlock {
Set-Service -Name "SysMain" -StartupType "Manual" -ErrorAction Stop
Stop-Service -Name "SysMain" -Force -ErrorAction Stop
} -BackupScript {
$service = Get-Service -Name "SysMain" -ErrorAction SilentlyContinue
$startType = (Get-WmiObject -Class Win32_Service -Filter "Name='SysMain'").StartMode
Backup-Setting -Name "SysMain" -Type "Service" -Path "" -OriginalValue $startType -Description "SysMain service"
} -SuccessMessage "SysMain service optimized"
# 5. Disable Office hardware graphics acceleration
Invoke-SafeOptimization -ScriptBlock {
$officeVersions = '16.0', '15.0'
$officeApps = @('Word', 'Excel', 'PowerPoint', 'Outlook')
foreach ($version in $officeVersions) {
foreach ($app in $officeApps) {
$regPath = "HKCU:\Software\Microsoft\Office\$version\$app\Options"
if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force | Out-Null
}
Set-ItemProperty -Path $regPath -Name "DisableHardwareAcceleration" -Value 1 -ErrorAction SilentlyContinue
}
}
} -BackupScript {
$officeVersions = '16.0', '15.0'
$officeApps = @('Word', 'Excel', 'PowerPoint', 'Outlook')
foreach ($version in $officeVersions) {
foreach ($app in $officeApps) {
$regPath = "HKCU:\Software\Microsoft\Office\$version\$app\Options"
$original = Get-ItemProperty -Path $regPath -Name "DisableHardwareAcceleration" -ErrorAction SilentlyContinue
Backup-Setting -Name "DisableHardwareAcceleration" -Type "Registry" -Path $regPath -OriginalValue $original.DisableHardwareAcceleration -Description "Office hardware acceleration settings ($app)"
}
}
} -SuccessMessage "Office hardware acceleration disabled (reduces lag)"
# 6. Optimize WPS performance (新增的 WPS 优化)
Optimize-WPSPerformance
Write-Log "Document performance optimization completed" "SUCCESS"
}
# Other optimization functions
function Optimize-Performance {
Write-Log "Executing system performance optimization..." "INFO"
# Backup current power plan
Invoke-SafeOptimization -ScriptBlock {
powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
} -BackupScript {
$currentPlan = (powercfg /getactivescheme) -replace '.*: ([a-fA-F0-9-]+).*', '$1'
Backup-Setting -Name "PowerPlan" -Type "PowerPlan" -Path "" -OriginalValue $currentPlan -Description "Power plan"
} -SuccessMessage "High performance power plan enabled"
}
function Optimize-Network {
Write-Log "Executing network optimization..." "INFO"
# Network optimization usually doesn't need backup (temporary settings)
Invoke-SafeOptimization -ScriptBlock {
netsh int tcp set global autotuninglevel=normal
} -SuccessMessage "Network parameters optimized"
}
function Optimize-Cleanup {
Write-Log "Executing system cleanup..." "INFO"
# Cleanup operations don't need backup
$tempPaths = @("$env:TEMP", "C:\Windows\Temp")
foreach ($path in $tempPaths) {
if (Test-Path $path) {
try {
Remove-Item -Path "$path\*" -Recurse -Force -ErrorAction SilentlyContinue
Write-Log "Temporary files cleaned: $path" "SUCCESS"
} catch {
Write-Log "Cleanup skipped: $path" "WARNING"
}
}
}
}
function Repair-System {
Write-Log "Executing system repair check..." "INFO"
# System repair doesn't need backup
try {
Start-Process -Wait "sfc" "/scannow" -WindowStyle Hidden
Write-Log "System file check completed" "SUCCESS"
} catch {
Write-Log "System file check skipped" "WARNING"
}
}
# Main execution flow
Write-Log "Starting optimization..." "INFO"
# Initialize log file
"=== Windows10 System Optimization Log ===" | Out-File $LogPath -Encoding UTF8
"Start time: $timestamp" | Out-File $LogPath -Append -Encoding UTF8
"Optimization mode: $Mode" | Out-File $LogPath -Append -Encoding UTF8
"=" * 50 | Out-File $LogPath -Append -Encoding UTF8
if ($Mode -eq "RESTORE") {
Restore-OriginalSettings
} else {
# Initialize backup file before optimization
if (Test-Path $BackupPath) {
$oldBackup = Get-Content $BackupPath | ConvertFrom-Json
$BackupData.OriginalSettings = $oldBackup.OriginalSettings
}
switch ($Mode) {
"AUTO" {
Optimize-Cleanup
Optimize-Performance
Optimize-Network
Optimize-DocumentPerformance
Repair-System
}
"PERFORMANCE" { Optimize-Performance }
"NETWORK" { Optimize-Network }
"DOCUMENT" { Optimize-DocumentPerformance }
"CLEANUP" {
Optimize-Cleanup
Repair-System
}
}
# Save backup data
if ($Mode -ne "RESTORE") {
$BackupData | ConvertTo-Json -Depth 5 | Out-File $BackupPath -Encoding UTF8
Write-Log "System configuration backup saved: $BackupPath" "SUCCESS"
}
# Completion statistics
$endTime = Get-Date
$duration = ($endTime - $startTime).TotalSeconds
Write-Log "Optimization completed! Time taken: $([math]::Round($duration,1)) seconds" "SUCCESS"
Write-Log "Recommend restarting computer for optimizations to take effect" "INFO"
# Add instructions
if ($Mode -ne "RESTORE") {
Write-Log " " "INFO"
Write-Log "Security Notes:" "INFO"
Write-Log "✓ All original settings backed up to: $BackupPath" "INFO"
Write-Log "✓ To restore, run main program and select option 7" "INFO"
Write-Log "✓ These optimizations are safe and won't affect your documents" "INFO"
}
}
保存为 Windows10优化.ps1
两个文件放置于同一文件夹下, 右键管理员 执行 Windows10OptimizationTool.bat

ba229bf44bf680f65ee019cc6aab5cf3.jpg