# ========================================================= # MAX Windows Toolkit - 使用 Wise Registry Cleaner 清理注册表 # 中文界面,统一风格 # ========================================================= $Common = "C:\Setup\windows\lib\common.ps1" if (Test-Path $Common) { . $Common } Write-Header "使用 Wise Registry Cleaner 清理注册表" Show-AdminWarn # 配置 $ToolBaseUrl = "https://dl.unvmax.com/windows/tools-bin" $ToolDir = Join-Path $Global:LocalRoot "tools-bin" $BackupDir = "C:\Setup\RegistryBackup" $WiseFileName = "WiseRegistryCleaner.exe" $WiseUrl = "$ToolBaseUrl/$WiseFileName" $WisePath = Join-Path $ToolDir $WiseFileName # 确保目录存在 try { New-Item -ItemType Directory -Path $ToolDir -Force -ErrorAction Stop | Out-Null New-Item -ItemType Directory -Path $BackupDir -Force -ErrorAction Stop | Out-Null } catch { Write-Err "创建目录失败" Write-Muted $_.Exception.Message } # 显示警告信息 function Show-WiseWarning { Write-Warn "重要提示:" Write-Warn "注册表清理可能影响已安装的软件或系统组件" Write-Info "" Write-Info "推荐流程:" Write-Info " 先备份 → 扫描 → 检查结果 → 仅清理安全项目" Write-Info "" Write-Info "安全注意事项:" Write-Info " - 清理前创建系统还原点" Write-Info " - 清理前创建注册表备份" Write-Info " - 不要盲目清理所有检测到的项目" Write-Info " - 修复前仔细检查扫描结果" } # 确保 Wise 存在 function Ensure-WiseRegistryCleaner { if (Test-Path $WisePath) { return $true } Write-Warn "本地未找到 Wise Registry Cleaner" Write-Muted "期望路径: $WisePath" Write-Info "" $Confirm = Read-Host "立即下载?输入 YES 继续" if ($Confirm -ne "YES") { Write-Warn "已取消" return $false } return (Download-File -Url $WiseUrl -OutFile $WisePath) } # 下载/更新 Wise function Download-OrUpdateWiseRegistryCleaner { Write-Info "正在下载/更新 Wise Registry Cleaner..." Write-Muted "URL : $WiseUrl" Write-Muted "路径: $WisePath" if (Download-File -Url $WiseUrl -OutFile $WisePath) { try { Unblock-File -Path $WisePath -ErrorAction SilentlyContinue } catch {} Write-OK "Wise Registry Cleaner 已就绪" } else { Write-Err "下载 Wise Registry Cleaner 失败" } } # 启动 Wise function Start-WiseRegistryCleaner { if (-not (Ensure-WiseRegistryCleaner)) { return } try { Unblock-File -Path $WisePath -ErrorAction SilentlyContinue } catch {} Write-Info "正在启动 Wise Registry Cleaner..." try { Start-Process -FilePath $WisePath -WorkingDirectory $ToolDir Write-OK "Wise Registry Cleaner 已启动" } catch { Write-Err "启动 Wise Registry Cleaner 失败" Write-Muted $_.Exception.Message } } # 创建系统还原点 function Create-SystemRestorePoint { if (-not (Test-IsAdmin)) { Write-Err "创建系统还原点需要管理员权限" return } Write-Info "正在创建系统还原点..." try { Enable-ComputerRestore -Drive "$env:SystemDrive\" -ErrorAction SilentlyContinue Checkpoint-Computer -Description "Before Wise Registry Cleaner" -RestorePointType "MODIFY_SETTINGS" -ErrorAction Stop Write-OK "系统还原点已创建" } catch { Write-Err "创建系统还原点失败" Write-Muted $_.Exception.Message Write-Warn "可能原因:Windows 限制了还原点创建频率" Write-Warn "您仍可单独创建注册表备份" } } # 创建注册表备份 function Create-RegistryBackup { if (-not (Test-IsAdmin)) { Write-Err "注册表备份需要管理员权限" return } $Time = Get-Date -Format "yyyyMMdd-HHmmss" $CurrentBackupDir = Join-Path $BackupDir $Time New-Item -ItemType Directory -Path $CurrentBackupDir -Force | Out-Null Write-Info "正在创建注册表备份..." Write-Info "备份文件夹: $CurrentBackupDir" $Targets = @( @{ Name = "HKLM"; Path = "HKLM"; File = "HKLM.reg" }, @{ Name = "HKCU"; Path = "HKCU"; File = "HKCU.reg" }, @{ Name = "HKCR"; Path = "HKCR"; File = "HKCR.reg" } ) foreach ($Target in $Targets) { $OutFile = Join-Path $CurrentBackupDir $Target.File Write-Info "正在导出 $($Target.Name)..." try { & reg.exe export $Target.Path $OutFile /y | Out-Null if (Test-Path $OutFile) { Write-OK "$($Target.Name) 已导出: $OutFile" } else { Write-Warn "$($Target.Name) 导出可能失败" } } catch { Write-Err "$($Target.Name) 导出失败" Write-Muted $_.Exception.Message } } Write-OK "注册表备份完成" } # 打开备份文件夹 function Open-RegistryBackupFolder { New-Item -ItemType Directory -Path $BackupDir -Force | Out-Null Start-Process explorer.exe $BackupDir } # 安全流程 function Run-SafeWiseFlow { Write-Info "此操作将:创建还原点 → 创建注册表备份 → 启动 Wise Registry Cleaner" Write-Info "" $Confirm = Read-Host "是否继续?输入 YES 确认" if ($Confirm -ne "YES") { Write-Warn "已取消" return } Create-SystemRestorePoint Create-RegistryBackup Start-WiseRegistryCleaner } # 主菜单循环 :wiseLoop while ($true) { Write-Header "使用 Wise Registry Cleaner 清理注册表" Show-WiseWarning Write-Info "可用操作:" Write-Info "1. 启动 Wise Registry Cleaner" Write-Info "2. 创建系统还原点" Write-Info "3. 创建注册表备份" Write-Info "4. 创建还原点 + 注册表备份 + 启动 Wise" Write-Info "5. 打开注册表备份文件夹" Write-Info "6. 下载/更新 Wise Registry Cleaner" Write-Info "0. 退出" Write-Info "" $Choice = Read-Host "请选择" Write-Line switch ($Choice) { "1" { Start-WiseRegistryCleaner; Pause-Max } "2" { Create-SystemRestorePoint; Pause-Max } "3" { Create-RegistryBackup; Pause-Max } "4" { Run-SafeWiseFlow; Pause-Max } "5" { Open-RegistryBackupFolder; Pause-Max } "6" { Download-OrUpdateWiseRegistryCleaner; Pause-Max } "0" { break :wiseLoop } default { Write-Err "无效选项"; Pause-Max } } }