mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 04:22:06 +08:00
Refactor README.md and remove outdated Windows batch script
- Updated README.md to replace references to the Windows reset script from a .bat file to a .ps1 file for improved compatibility with PowerShell. - Removed the obsolete cursor_win_id_modifier.bat script to streamline the project and eliminate redundancy. - Ensured clarity in installation instructions for domestic users by maintaining consistent formatting and updated download commands.
This commit is contained in:
parent
90e18cd86b
commit
4365cd32d2
@ -73,11 +73,10 @@ irm https://raw.githubusercontent.com/yuaotian/go-cursor-help/master/scripts/ins
|
||||
```
|
||||
**国内用户快速安装**
|
||||
```powershell
|
||||
# 下载重置脚本
|
||||
curl -o "%TEMP%\cursor_reset.bat" "https://gh-proxy.com/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_win_id_modifier.bat"
|
||||
|
||||
# 执行重置脚本
|
||||
start "" "%TEMP%\cursor_reset.bat"
|
||||
curl -o "%TEMP%\cursor_reset.bat" "https://gh-proxy.com/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_win_id_modifier.ps1 "
|
||||
|
||||
|
||||
```
|
||||
|
||||
#### Windows Installation Features:
|
||||
@ -225,7 +224,7 @@ irm https://raw.githubusercontent.com/yuaotian/go-cursor-help/master/scripts/ins
|
||||
**国内用户快速安装**
|
||||
```powershell
|
||||
# 下载重置脚本
|
||||
curl -o "%TEMP%\cursor_reset.bat" "https://gh-proxy.com/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_win_id_modifier.bat"
|
||||
curl -o "%TEMP%\cursor_reset.bat" "https://gh-proxy.com/https://raw.githubusercontent.com/yuaotian/go-cursor-help/refs/heads/master/scripts/run/cursor_win_id_modifier.ps1 "
|
||||
|
||||
# 执行重置脚本
|
||||
start "" "%TEMP%\cursor_reset.bat"
|
||||
|
@ -1,224 +0,0 @@
|
||||
@echo off
|
||||
chcp 65001 >nul
|
||||
setlocal EnableDelayedExpansion
|
||||
|
||||
:: 颜色定义
|
||||
set "RED=[31m"
|
||||
set "GREEN=[32m"
|
||||
set "YELLOW=[33m"
|
||||
set "BLUE=[34m"
|
||||
set "NC=[0m"
|
||||
|
||||
:: 配置文件路径
|
||||
set "STORAGE_FILE=%APPDATA%\Cursor\User\globalStorage\storage.json"
|
||||
set "BACKUP_DIR=%APPDATA%\Cursor\User\globalStorage\backups"
|
||||
|
||||
:: 检查管理员权限
|
||||
net session >nul 2>&1
|
||||
if %errorLevel% neq 0 (
|
||||
echo %RED%[错误]%NC% 请以管理员身份运行此脚本
|
||||
echo 请右键点击脚本,选择"以管理员身份运行"
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: 显示 Logo
|
||||
cls
|
||||
echo.
|
||||
echo ██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗
|
||||
echo ██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗
|
||||
echo ██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝
|
||||
echo ██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗
|
||||
echo ╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║
|
||||
echo ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝
|
||||
echo.
|
||||
echo %BLUE%================================%NC%
|
||||
echo %GREEN% Cursor ID 修改工具%NC%
|
||||
echo %BLUE%================================%NC%
|
||||
echo.
|
||||
|
||||
:: 检查并关闭 Cursor 进程
|
||||
:: 定义最大重试次数和等待时间
|
||||
set "MAX_RETRIES=5"
|
||||
set "WAIT_TIME=1"
|
||||
|
||||
echo %GREEN%[信息]%NC% 检查 Cursor 进程...
|
||||
|
||||
goto :main
|
||||
|
||||
:check_process
|
||||
setlocal
|
||||
set "process_name=%~1"
|
||||
tasklist /FI "IMAGENAME eq %process_name%" 2>NUL | find /I "%process_name%" >NUL
|
||||
endlocal & exit /b %ERRORLEVEL%
|
||||
|
||||
:get_process_details
|
||||
setlocal
|
||||
set "process_name=%~1"
|
||||
echo %BLUE%[调试]%NC% 正在获取 %process_name% 进程详细信息:
|
||||
wmic process where "name='%process_name%'" get ProcessId,ExecutablePath,CommandLine /format:list
|
||||
endlocal
|
||||
exit /b
|
||||
|
||||
:main
|
||||
|
||||
:: 处理 Cursor.exe
|
||||
call :check_process "Cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo %YELLOW%[警告]%NC% 发现 Cursor.exe 正在运行
|
||||
call :get_process_details "Cursor.exe"
|
||||
|
||||
echo %YELLOW%[警告]%NC% 尝试关闭 Cursor.exe...
|
||||
taskkill /F /IM "Cursor.exe" >NUL 2>&1
|
||||
|
||||
:: 循环检测进程是否真正关闭
|
||||
set "retry_count=0"
|
||||
:retry_cursor
|
||||
call :check_process "Cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
set /a "retry_count+=1"
|
||||
if !retry_count! geq %MAX_RETRIES% (
|
||||
echo %RED%[错误]%NC% 在 %MAX_RETRIES% 次尝试后仍无法关闭 Cursor.exe
|
||||
call :get_process_details "Cursor.exe"
|
||||
echo %RED%[错误]%NC% 请手动关闭进程后重试
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo %YELLOW%[警告]%NC% 等待进程关闭,尝试 !retry_count!/%MAX_RETRIES%...
|
||||
timeout /t %WAIT_TIME% /nobreak >NUL
|
||||
goto retry_cursor
|
||||
)
|
||||
echo %GREEN%[信息]%NC% Cursor.exe 已成功关闭
|
||||
)
|
||||
|
||||
:: 处理 cursor.exe
|
||||
call :check_process "cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo %YELLOW%[警告]%NC% 发现 cursor.exe 正在运行
|
||||
call :get_process_details "cursor.exe"
|
||||
|
||||
echo %YELLOW%[警告]%NC% 尝试关闭 cursor.exe...
|
||||
taskkill /F /IM "cursor.exe" >NUL 2>&1
|
||||
|
||||
:: 循环检测进程是否真正关闭
|
||||
set "retry_count=0"
|
||||
:retry_cursor_lower
|
||||
call :check_process "cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
set /a "retry_count+=1"
|
||||
if !retry_count! geq %MAX_RETRIES% (
|
||||
echo %RED%[错误]%NC% 在 %MAX_RETRIES% 次尝试后仍无法关闭 cursor.exe
|
||||
call :get_process_details "cursor.exe"
|
||||
echo %RED%[错误]%NC% 请手动关闭进程后重试
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
echo %YELLOW%[警告]%NC% 等待进程关闭,尝试 !retry_count!/%MAX_RETRIES%...
|
||||
timeout /t %WAIT_TIME% /nobreak >NUL
|
||||
goto retry_cursor_lower
|
||||
)
|
||||
echo %GREEN%[信息]%NC% cursor.exe 已成功关闭
|
||||
)
|
||||
|
||||
:: 最终确认所有进程都已关闭
|
||||
echo %GREEN%[信息]%NC% 正在进行最终确认...
|
||||
call :check_process "Cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo %RED%[错误]%NC% 仍然检测到 Cursor.exe 进程
|
||||
call :get_process_details "Cursor.exe"
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
call :check_process "cursor.exe"
|
||||
if %ERRORLEVEL% equ 0 (
|
||||
echo %RED%[错误]%NC% 仍然检测到 cursor.exe 进程
|
||||
call :get_process_details "cursor.exe"
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
echo %GREEN%[信息]%NC% 所有 Cursor 进程已确认关闭
|
||||
|
||||
:: 创建备份目录
|
||||
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
|
||||
|
||||
:: 备份现有配置
|
||||
if exist "%STORAGE_FILE%" (
|
||||
echo %GREEN%[信息]%NC% 正在备份配置文件...
|
||||
copy "%STORAGE_FILE%" "%BACKUP_DIR%\storage.json.backup_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%" >NUL
|
||||
if !errorlevel! neq 0 (
|
||||
echo %RED%[错误]%NC% 备份失败
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
:: 生成新的 ID
|
||||
echo %GREEN%[信息]%NC% 正在生成新的 ID...
|
||||
|
||||
:: 生成随机 ID
|
||||
for /f "delims=" %%a in ('powershell -Command "[System.Guid]::NewGuid().ToString()"') do set "UUID=%%a"
|
||||
for /f "delims=" %%a in ('powershell -Command "$bytes = New-Object Byte[] 32; (New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($bytes); -join($bytes | ForEach-Object { $_.ToString('x2') })"') do set "MACHINE_ID=%%a"
|
||||
for /f "delims=" %%a in ('powershell -Command "$bytes = New-Object Byte[] 32; (New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($bytes); -join($bytes | ForEach-Object { $_.ToString('x2') })"') do set "MAC_MACHINE_ID=%%a"
|
||||
for /f "delims=" %%a in ('powershell -Command "[System.Guid]::NewGuid().ToString().ToUpper()"') do set "SQM_ID={%%a}"
|
||||
|
||||
:: 创建或更新配置文件
|
||||
echo %GREEN%[信息]%NC% 正在更新配置...
|
||||
|
||||
:: 直接更新 JSON 文件
|
||||
if not exist "%STORAGE_FILE%" (
|
||||
echo {> "%STORAGE_FILE%"
|
||||
echo "telemetry.machineId": "%MACHINE_ID%",>> "%STORAGE_FILE%"
|
||||
echo "telemetry.macMachineId": "%MAC_MACHINE_ID%",>> "%STORAGE_FILE%"
|
||||
echo "telemetry.devDeviceId": "%UUID%",>> "%STORAGE_FILE%"
|
||||
echo "telemetry.sqmId": "%SQM_ID%">> "%STORAGE_FILE%"
|
||||
echo }>> "%STORAGE_FILE%"
|
||||
) else (
|
||||
:: 使用 PowerShell 更新现有 JSON 文件
|
||||
powershell -Command "$json = Get-Content '%STORAGE_FILE%' | ConvertFrom-Json; $json.'telemetry.machineId' = '%MACHINE_ID%'; $json.'telemetry.macMachineId' = '%MAC_MACHINE_ID%'; $json.'telemetry.devDeviceId' = '%UUID%'; $json.'telemetry.sqmId' = '%SQM_ID%'; $json | ConvertTo-Json -Depth 10 | Set-Content '%STORAGE_FILE%'"
|
||||
)
|
||||
|
||||
:: 设置文件权限
|
||||
icacls "%STORAGE_FILE%" /grant:r "%USERNAME%":F >NUL
|
||||
|
||||
:: 显示结果
|
||||
echo.
|
||||
echo %GREEN%[信息]%NC% 已更新配置:
|
||||
echo %BLUE%[调试]%NC% machineId: %MACHINE_ID%
|
||||
echo %BLUE%[调试]%NC% macMachineId: %MAC_MACHINE_ID%
|
||||
echo %BLUE%[调试]%NC% devDeviceId: %UUID%
|
||||
echo %BLUE%[调试]%NC% sqmId: %SQM_ID%
|
||||
echo.
|
||||
echo %GREEN%[信息]%NC% 操作完成!
|
||||
|
||||
:: 显示公众号信息
|
||||
echo.
|
||||
echo %GREEN%================================%NC%
|
||||
echo %YELLOW% 关注公众号【煎饼果子AI】一起交流更多Cursor技巧和AI知识 %NC%
|
||||
echo %GREEN%================================%NC%
|
||||
echo.
|
||||
|
||||
:: 显示文件树结构
|
||||
echo.
|
||||
echo %GREEN%[信息]%NC% 文件结构:
|
||||
echo %BLUE%%APPDATA%\Cursor\User%NC%
|
||||
echo ├── globalStorage
|
||||
echo │ ├── storage.json (已修改)
|
||||
echo │ └── backups
|
||||
|
||||
:: 列出备份文件
|
||||
if exist "%BACKUP_DIR%\*" (
|
||||
for %%F in ("%BACKUP_DIR%\*") do (
|
||||
echo │ └── %%~nxF
|
||||
)
|
||||
) else (
|
||||
echo │ └── (空)
|
||||
)
|
||||
echo.
|
||||
|
||||
echo %GREEN%[信息]%NC% 请重启 Cursor 以应用新的配置
|
||||
|
||||
echo.
|
||||
|
||||
pause
|
||||
exit /b 0
|
176
scripts/run/cursor_win_id_modifier.ps1
Normal file
176
scripts/run/cursor_win_id_modifier.ps1
Normal file
@ -0,0 +1,176 @@
|
||||
# 设置输出编码为 UTF-8
|
||||
$OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
# 颜色定义
|
||||
$RED = "`e[31m"
|
||||
$GREEN = "`e[32m"
|
||||
$YELLOW = "`e[33m"
|
||||
$BLUE = "`e[34m"
|
||||
$NC = "`e[0m"
|
||||
|
||||
# 配置文件路径
|
||||
$STORAGE_FILE = "$env:APPDATA\Cursor\User\globalStorage\storage.json"
|
||||
$BACKUP_DIR = "$env:APPDATA\Cursor\User\globalStorage\backups"
|
||||
|
||||
# 检查管理员权限
|
||||
function Test-Administrator {
|
||||
$user = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$principal = New-Object Security.Principal.WindowsPrincipal($user)
|
||||
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
|
||||
}
|
||||
|
||||
if (-not (Test-Administrator)) {
|
||||
Write-Host "$RED[错误]$NC 请以管理员身份运行此脚本"
|
||||
Write-Host "请右键点击脚本,选择'以管理员身份运行'"
|
||||
Read-Host "按回车键退出"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 显示 Logo
|
||||
Clear-Host
|
||||
Write-Host @"
|
||||
|
||||
██████╗██╗ ██╗██████╗ ███████╗ ██████╗ ██████╗
|
||||
██╔════╝██║ ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗
|
||||
██║ ██║ ██║██████╔╝███████╗██║ ██║██████╔╝
|
||||
██║ ██║ ██║██╔══██╗╚════██║██║ ██║██╔══██╗
|
||||
╚██████╗╚██████╔╝██║ ██║███████║╚██████╔╝██║ ██║
|
||||
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝
|
||||
|
||||
"@
|
||||
Write-Host "$BLUE================================$NC"
|
||||
Write-Host "$GREEN Cursor ID 修改工具$NC"
|
||||
Write-Host "$BLUE================================$NC"
|
||||
Write-Host ""
|
||||
|
||||
# 检查并关闭 Cursor 进程
|
||||
Write-Host "$GREEN[信息]$NC 检查 Cursor 进程..."
|
||||
|
||||
function Get-ProcessDetails {
|
||||
param($processName)
|
||||
Write-Host "$BLUE[调试]$NC 正在获取 $processName 进程详细信息:"
|
||||
Get-WmiObject Win32_Process -Filter "name='$processName'" |
|
||||
Select-Object ProcessId, ExecutablePath, CommandLine |
|
||||
Format-List
|
||||
}
|
||||
|
||||
# 定义最大重试次数和等待时间
|
||||
$MAX_RETRIES = 5
|
||||
$WAIT_TIME = 1
|
||||
|
||||
# 处理进程关闭
|
||||
function Close-CursorProcess {
|
||||
param($processName)
|
||||
|
||||
$process = Get-Process -Name $processName -ErrorAction SilentlyContinue
|
||||
if ($process) {
|
||||
Write-Host "$YELLOW[警告]$NC 发现 $processName 正在运行"
|
||||
Get-ProcessDetails $processName
|
||||
|
||||
Write-Host "$YELLOW[警告]$NC 尝试关闭 $processName..."
|
||||
Stop-Process -Name $processName -Force
|
||||
|
||||
$retryCount = 0
|
||||
while ($retryCount -lt $MAX_RETRIES) {
|
||||
$process = Get-Process -Name $processName -ErrorAction SilentlyContinue
|
||||
if (-not $process) { break }
|
||||
|
||||
$retryCount++
|
||||
if ($retryCount -ge $MAX_RETRIES) {
|
||||
Write-Host "$RED[错误]$NC 在 $MAX_RETRIES 次尝试后仍无法关闭 $processName"
|
||||
Get-ProcessDetails $processName
|
||||
Write-Host "$RED[错误]$NC 请手动关闭进程后重试"
|
||||
Read-Host "按回车键退出"
|
||||
exit 1
|
||||
}
|
||||
Write-Host "$YELLOW[警告]$NC 等待进程关闭,尝试 $retryCount/$MAX_RETRIES..."
|
||||
Start-Sleep -Seconds $WAIT_TIME
|
||||
}
|
||||
Write-Host "$GREEN[信息]$NC $processName 已成功关闭"
|
||||
}
|
||||
}
|
||||
|
||||
# 关闭所有 Cursor 进程
|
||||
Close-CursorProcess "Cursor"
|
||||
Close-CursorProcess "cursor"
|
||||
|
||||
# 创建备份目录
|
||||
if (-not (Test-Path $BACKUP_DIR)) {
|
||||
New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null
|
||||
}
|
||||
|
||||
# 备份现有配置
|
||||
if (Test-Path $STORAGE_FILE) {
|
||||
Write-Host "$GREEN[信息]$NC 正在备份配置文件..."
|
||||
$backupName = "storage.json.backup_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
|
||||
Copy-Item $STORAGE_FILE "$BACKUP_DIR\$backupName"
|
||||
}
|
||||
|
||||
# 生成新的 ID
|
||||
Write-Host "$GREEN[信息]$NC 正在生成新的 ID..."
|
||||
|
||||
$UUID = [System.Guid]::NewGuid().ToString()
|
||||
$MACHINE_ID = -join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) })
|
||||
$MAC_MACHINE_ID = -join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) })
|
||||
$SQM_ID = "{$([System.Guid]::NewGuid().ToString().ToUpper())}"
|
||||
|
||||
# 创建或更新配置文件
|
||||
Write-Host "$GREEN[信息]$NC 正在更新配置..."
|
||||
|
||||
$config = @{
|
||||
'telemetry.machineId' = $MACHINE_ID
|
||||
'telemetry.macMachineId' = $MAC_MACHINE_ID
|
||||
'telemetry.devDeviceId' = $UUID
|
||||
'telemetry.sqmId' = $SQM_ID
|
||||
}
|
||||
|
||||
$config | ConvertTo-Json | Set-Content $STORAGE_FILE
|
||||
|
||||
# 设置文件权限
|
||||
$acl = Get-Acl $STORAGE_FILE
|
||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
|
||||
$env:USERNAME, "FullControl", "Allow"
|
||||
)
|
||||
$acl.SetAccessRule($rule)
|
||||
Set-Acl $STORAGE_FILE $acl
|
||||
|
||||
# 显示结果
|
||||
Write-Host ""
|
||||
Write-Host "$GREEN[信息]$NC 已更新配置:"
|
||||
Write-Host "$BLUE[调试]$NC machineId: $MACHINE_ID"
|
||||
Write-Host "$BLUE[调试]$NC macMachineId: $MAC_MACHINE_ID"
|
||||
Write-Host "$BLUE[调试]$NC devDeviceId: $UUID"
|
||||
Write-Host "$BLUE[调试]$NC sqmId: $SQM_ID"
|
||||
|
||||
# 显示公众号信息
|
||||
Write-Host ""
|
||||
Write-Host "$GREEN================================$NC"
|
||||
Write-Host "$YELLOW 关注公众号【煎饼果子AI】一起交流更多Cursor技巧和AI知识 $NC"
|
||||
Write-Host "$GREEN================================$NC"
|
||||
Write-Host ""
|
||||
|
||||
# 显示文件树结构
|
||||
Write-Host ""
|
||||
Write-Host "$GREEN[信息]$NC 文件结构:"
|
||||
Write-Host "$BLUE$env:APPDATA\Cursor\User$NC"
|
||||
Write-Host "├── globalStorage"
|
||||
Write-Host "│ ├── storage.json (已修改)"
|
||||
Write-Host "│ └── backups"
|
||||
|
||||
# 列出备份文件
|
||||
$backupFiles = Get-ChildItem "$BACKUP_DIR\*" -ErrorAction SilentlyContinue
|
||||
if ($backupFiles) {
|
||||
foreach ($file in $backupFiles) {
|
||||
Write-Host "│ └── $($file.Name)"
|
||||
}
|
||||
} else {
|
||||
Write-Host "│ └── (空)"
|
||||
}
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "$GREEN[信息]$NC 请重启 Cursor 以应用新的配置"
|
||||
Write-Host ""
|
||||
|
||||
Read-Host "按回车键退出"
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user