From 8f3a30fc6719bec2068004a365cd2a321bfa37cc Mon Sep 17 00:00:00 2001 From: yeongpin Date: Mon, 13 Jan 2025 11:33:06 +0800 Subject: [PATCH] new reset ps1 --- reset.ps1 | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 reset.ps1 diff --git a/reset.ps1 b/reset.ps1 new file mode 100644 index 0000000..ce50940 --- /dev/null +++ b/reset.ps1 @@ -0,0 +1,169 @@ +# 檢查是否是通過權限提升啟動的 +param( + [switch]$Elevated +) + +# 設置顏色主題 +$Theme = @{ + Primary = 'Cyan' + Success = 'Green' + Warning = 'Yellow' + Error = 'Red' + Info = 'White' +} + +# ASCII Logo +$Logo = @" +██████╗ ███████╗███████╗███████╗████████╗ ████████╗ ██████╗ ██████╗ ██╗ +██╔══██╗██╔════╝██╔════╝██╔════╝╚══██╔══╝ ╚══██╔══╝██╔═══██╗██╔═══██╗██║ +██████╔╝█████╗ ███████╗█████╗ ██║ ██║ ██║ ██║██║ ██║██║ +██╔══██╗██╔══╝ ╚════██║██╔══╝ ██║ ██║ ██║ ██║██║ ██║██║ +██║ ██║███████╗███████║███████╗ ██║ ██║ ╚██████╔╝╚██████╔╝███████╗ +╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ +"@ + +# 美化輸出函數 +function Write-Styled { + param ( + [string]$Message, + [string]$Color = $Theme.Info, + [string]$Prefix = "", + [switch]$NoNewline + ) + $emoji = switch ($Color) { + $Theme.Success { "✅" } + $Theme.Error { "❌" } + $Theme.Warning { "⚠️" } + default { "ℹ️" } + } + + $output = if ($Prefix) { "$emoji $Prefix :: $Message" } else { "$emoji $Message" } + if ($NoNewline) { + Write-Host $output -ForegroundColor $Color -NoNewline + } else { + Write-Host $output -ForegroundColor $Color + } +} + +# 檢查管理員權限 +$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") +if (-NOT $isAdmin) { + Write-Styled "需要管理員權限來運行重置工具" -Color $Theme.Warning -Prefix "權限" + Write-Styled "正在請求管理員權限..." -Color $Theme.Primary -Prefix "提升" + + # 顯示操作選項 + Write-Host "`n選擇操作:" -ForegroundColor $Theme.Primary + Write-Host "1. 請求管理員權限" -ForegroundColor $Theme.Info + Write-Host "2. 退出程序" -ForegroundColor $Theme.Info + + $choice = Read-Host "`n請輸入選項 (1-2)" + + if ($choice -ne "1") { + Write-Styled "操作已取消" -Color $Theme.Warning -Prefix "取消" + Write-Host "`n按任意鍵退出..." -ForegroundColor $Theme.Info + $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown') + exit + } + + try { + Start-Process powershell.exe -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" -Elevated" + exit + } + catch { + Write-Styled "無法獲取管理員權限" -Color $Theme.Error -Prefix "錯誤" + Write-Styled "請以管理員身份運行 PowerShell 後重試" -Color $Theme.Warning -Prefix "提示" + Write-Host "`n按任意鍵退出..." -ForegroundColor $Theme.Info + $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown') + exit 1 + } +} + +# 如果是提升權限後的窗口,等待一下確保窗口可見 +if ($Elevated) { + Start-Sleep -Seconds 1 +} + +# 獲取版本號函數 +function Get-LatestVersion { + try { + $latestRelease = Invoke-RestMethod -Uri "https://api.github.com/repos/yeongpin/cursor-free-vip/releases/latest" + return @{ + Version = $latestRelease.tag_name.TrimStart('v') + Assets = $latestRelease.assets + } + } catch { + Write-Styled $_.Exception.Message -Color $Theme.Error -Prefix "錯誤" + throw "無法獲取最新版本信息" + } +} + +# 顯示 Logo +Write-Host $Logo -ForegroundColor $Theme.Primary +$releaseInfo = Get-LatestVersion +$version = $releaseInfo.Version +Write-Host "Version $version" -ForegroundColor $Theme.Info +Write-Host "Created by YeongPin`n" -ForegroundColor $Theme.Info + +# 設置 TLS 1.2 +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +# 創建臨時目錄 +$TmpDir = Join-Path $env:TEMP ([System.Guid]::NewGuid().ToString()) +New-Item -ItemType Directory -Path $TmpDir -Force | Out-Null + +# 清理函數 +function Cleanup { + if (Test-Path $TmpDir) { + Remove-Item -Recurse -Force $TmpDir -ErrorAction SilentlyContinue + } +} + +# 主要執行函數 +function Start-ResetTool { + Write-Styled "開始下載重置工具" -Color $Theme.Primary -Prefix "下載" + + try { + # 獲取最新版本 + Write-Styled "正在檢查最新版本..." -Color $Theme.Primary -Prefix "更新" + $releaseInfo = Get-LatestVersion + $version = $releaseInfo.Version + Write-Styled "找到最新版本: $version" -Color $Theme.Success -Prefix "版本" + + # 查找對應的資源 + $asset = $releaseInfo.Assets | Where-Object { $_.name -eq "reset_machine_manual.exe" } + if (!$asset) { + Write-Styled "找不到重置工具執行檔" -Color $Theme.Error -Prefix "錯誤" + throw "找不到對應的執行檔" + } + + # 下載 + Write-Styled "正在下載重置工具..." -Color $Theme.Primary -Prefix "下載" + $downloadPath = Join-Path $TmpDir "reset_machine_manual.exe" + Invoke-WebRequest -Uri $asset.browser_download_url -OutFile $downloadPath + + # 執行 + Write-Styled "正在啟動重置工具..." -Color $Theme.Primary -Prefix "執行" + Start-Process -FilePath $downloadPath -Wait + + Write-Styled "重置完成!" -Color $Theme.Success -Prefix "完成" + + } + catch { + Write-Styled $_.Exception.Message -Color $Theme.Error -Prefix "錯誤" + throw + } +} + +# 執行重置 +try { + Start-ResetTool +} +catch { + Write-Styled "重置工具執行失敗" -Color $Theme.Error -Prefix "錯誤" + Write-Styled $_.Exception.Message -Color $Theme.Error +} +finally { + Cleanup + Write-Host "`n按任意鍵退出..." -ForegroundColor $Theme.Info + $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown') +} \ No newline at end of file