2026-03-10 win10 优化脚本

@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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容