diff --git a/.gitignore b/.gitignore index 27161b5..80d4dfa 100644 --- a/.gitignore +++ b/.gitignore @@ -39,4 +39,6 @@ coverage.txt *.tmp *~ *.bak -*.log \ No newline at end of file +*.log + +.cunzhi*/ \ No newline at end of file diff --git a/scripts/run/cursor_mac_free_trial_reset.sh b/scripts/run/cursor_mac_free_trial_reset.sh index a531714..d40d432 100644 --- a/scripts/run/cursor_mac_free_trial_reset.sh +++ b/scripts/run/cursor_mac_free_trial_reset.sh @@ -72,6 +72,64 @@ BACKUP_DIR="$HOME/Library/Application Support/Cursor/User/globalStorage/backups" # 定义 Cursor 应用程序路径 CURSOR_APP_PATH="/Applications/Cursor.app" +# 🚀 新增 Cursor 防掉试用Pro删除文件夹功能 +remove_cursor_trial_folders() { + echo + log_info "🎯 [核心功能] 正在执行 Cursor 防掉试用Pro删除文件夹..." + log_info "📋 [说明] 此功能将删除指定的Cursor相关文件夹以重置试用状态" + echo + + # 定义需要删除的文件夹路径 + local folders_to_delete=( + "$HOME/Library/Application Support/Cursor" + "$HOME/.cursor" + ) + + log_info "📂 [检测] 将检查以下文件夹:" + for folder in "${folders_to_delete[@]}"; do + echo " 📁 $folder" + done + echo + + local deleted_count=0 + local skipped_count=0 + local error_count=0 + + # 删除指定文件夹 + for folder in "${folders_to_delete[@]}"; do + log_debug "🔍 [检查] 检查文件夹: $folder" + + if [ -d "$folder" ]; then + log_warn "⚠️ [警告] 发现文件夹存在,正在删除..." + if rm -rf "$folder"; then + log_info "✅ [成功] 已删除文件夹: $folder" + ((deleted_count++)) + else + log_error "❌ [错误] 删除文件夹失败: $folder" + ((error_count++)) + fi + else + log_warn "⏭️ [跳过] 文件夹不存在: $folder" + ((skipped_count++)) + fi + echo + done + + # 显示操作统计 + log_info "📊 [统计] 操作完成统计:" + echo " ✅ 成功删除: $deleted_count 个文件夹" + echo " ⏭️ 跳过处理: $skipped_count 个文件夹" + echo " ❌ 删除失败: $error_count 个文件夹" + echo + + if [ $deleted_count -gt 0 ]; then + log_info "🎉 [完成] Cursor 防掉试用Pro文件夹删除完成!" + else + log_warn "🤔 [提示] 未找到需要删除的文件夹,可能已经清理过了" + fi + echo +} + # 检查权限 check_permissions() { if [ "$EUID" -ne 0 ]; then @@ -1000,121 +1058,68 @@ main() { ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝ " echo -e "${BLUE}================================${NC}" - echo -e "${GREEN} Cursor 启动工具 ${NC}" - echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】 ${NC}" - echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" + echo -e "${GREEN}🚀 Cursor 防掉试用Pro删除工具 ${NC}" + echo -e "${YELLOW}📱 关注公众号【煎饼果子卷AI】 ${NC}" + echo -e "${YELLOW}🤝 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" echo -e "${BLUE}================================${NC}" echo - echo -e "${YELLOW}[重要提示]${NC} 本工具优先修改js文件,更加安全可靠" - echo -e "${YELLOW}[重要提示]${NC} 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】" + echo -e "${YELLOW}💡 [重要提示]${NC} 本工具专注于删除Cursor试用相关文件夹,暂时屏蔽机器码修改功能" + echo -e "${YELLOW}💡 [重要提示]${NC} 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】" echo - # 执行主要功能 + # 🚀 执行主要功能 check_permissions check_and_kill_cursor - backup_config - - # 处理配置文件,默认不重置机器码 - generate_new_config - - # 执行主程序文件修改 - log_info "正在执行主程序文件修改..." - - # 使用子shell执行修改,避免错误导致整个脚本退出 - ( - if modify_cursor_app_files; then - log_info "主程序文件修改成功!" - else - log_warn "主程序文件修改失败,但配置文件修改可能已成功" - log_warn "如果重启后 Cursor 仍然提示设备被禁用,请重新运行此脚本" - fi - ) - - # 恢复错误处理 - set -e + + # 🎯 执行 Cursor 防掉试用Pro删除文件夹功能 + log_info "🚀 [开始] 开始执行核心功能..." + remove_cursor_trial_folders + + # 🚫 以下功能已暂时屏蔽 + log_warn "⚠️ [提示] 以下功能已暂时屏蔽:" + log_info "📋 [说明] - 配置文件备份和修改" + log_info "📋 [说明] - 主程序文件修改" + log_info "📋 [说明] 当前版本专注于删除文件夹功能" + echo - show_file_tree - show_follow_info - - # 直接执行禁用自动更新 - disable_auto_update + # 🎉 显示操作完成信息 + echo + log_info "🎉 [完成] Cursor 防掉试用Pro删除操作已完成!" + echo - log_info "请重启 Cursor 以应用新的配置" + # 📱 显示公众号信息 + echo -e "${GREEN}================================${NC}" + echo -e "${YELLOW}📱 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" + echo -e "${GREEN}================================${NC}" + echo + log_info "🚀 [提示] 现在可以重新启动 Cursor 尝试使用了!" + echo - # 显示最后的提示信息 - show_follow_info + # 🚫 以下功能已暂时屏蔽 + log_warn "⚠️ [提示] 以下功能已暂时屏蔽:" + log_info "📋 [说明] - 自动更新禁用功能" + log_info "📋 [说明] - 应用修复功能" + log_info "📋 [说明] 如需恢复这些功能,请联系开发者" + echo - # 提供修复选项(移到最后) + # 🎉 脚本执行完成 + log_info "🎉 [完成] 所有操作已完成!" + echo + log_info "💡 [提示] 如果需要恢复机器码修改功能,请联系开发者" + log_warn "⚠️ [注意] 重启 Cursor 后生效" + echo + log_info "🚀 [下一步] 现在可以启动 Cursor 尝试使用了!" echo - log_warn "Cursor 修复选项" - - # 使用新的菜单选择函数 - select_menu_option "请使用上下箭头选择,按Enter确认:" "忽略 - 不执行修复操作|修复模式 - 恢复原始的 Cursor 安装" 0 - fix_choice=$? - - # 记录日志以便调试 - echo "[INPUT_DEBUG] 修复选项选择: $fix_choice" >> "$LOG_FILE" - - # 确保脚本不会因为输入问题而终止 - set +e - - # 处理用户选择 - 索引1对应"修复模式"选项 - if [ "$fix_choice" = "1" ]; then - log_info "您选择了修复模式" - # 使用子shell执行清理,避免错误导致整个脚本退出 - ( - if clean_cursor_app; then - log_info "Cursor 已恢复到原始状态" - log_info "如果您需要应用ID修改,请重新运行此脚本" - else - log_warn "未能找到备份,无法自动恢复" - log_warn "建议重新安装 Cursor" - fi - ) - else - log_info "已跳过修复操作" - fi - - # 恢复错误处理 - set -e # 记录脚本完成信息 - log_info "脚本执行完成" - echo "========== Cursor ID 修改工具日志结束 $(date) ==========" >> "$LOG_FILE" - + log_info "📝 [日志] 脚本执行完成" + echo "========== Cursor 防掉试用Pro删除工具日志结束 $(date) ==========" >> "$LOG_FILE" + # 显示日志文件位置 echo - log_info "详细日志已保存到: $LOG_FILE" + log_info "📄 [日志] 详细日志已保存到: $LOG_FILE" echo "如遇问题请将此日志文件提供给开发者以协助排查" echo - - # 添加修复"应用已损坏"选项 - echo - log_warn "应用修复选项" - - # 使用新的菜单选择函数 - select_menu_option "请使用上下箭头选择,按Enter确认:" "忽略 - 不执行修复操作|修复"应用已损坏"问题 - 解决macOS提示应用已损坏无法打开的问题" 0 - damaged_choice=$? - - echo "[INPUT_DEBUG] 应用修复选项选择: $damaged_choice" >> "$LOG_FILE" - - set +e - - # 处理用户选择 - 索引1对应"修复应用已损坏"选项 - if [ "$damaged_choice" = "1" ]; then - log_info "您选择了修复"应用已损坏"问题" - ( - if fix_damaged_app; then - log_info "修复"应用已损坏"问题完成" - else - log_warn "修复"应用已损坏"问题失败" - fi - ) - else - log_info "已跳过应用修复操作" - fi - - set -e } # 执行主函数 diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index 7e29c0b..e13ec5c 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -50,64 +50,69 @@ log_cmd_output() { echo "" >> "$LOG_FILE" } -# 新增 Cursor 初始化清理函数 -cursor_initialize_cleanup() { - log_info "正在执行 Cursor 初始化清理..." - local BASE_PATH="$HOME/Library/Application Support/Cursor/User" - - log_debug "基础路径: $BASE_PATH" +# 🚀 新增 Cursor 防掉试用Pro删除文件夹功能 +remove_cursor_trial_folders() { + echo + log_info "🎯 [核心功能] 正在执行 Cursor 防掉试用Pro删除文件夹..." + log_info "📋 [说明] 此功能将删除指定的Cursor相关文件夹以重置试用状态" + echo - local files_to_delete=( - "$BASE_PATH/globalStorage/state.vscdb" - "$BASE_PATH/globalStorage/state.vscdb.backup" + # 定义需要删除的文件夹路径 + local folders_to_delete=( + "$HOME/Library/Application Support/Cursor" + "$HOME/.cursor" ) - - local folder_to_clean_contents="$BASE_PATH/History" - local folder_to_delete_completely="$BASE_PATH/workspaceStorage" - - # 删除指定文件 - for file_path in "${files_to_delete[@]}"; do - log_debug "检查文件: $file_path" - if [ -f "$file_path" ]; then - if rm -f "$file_path"; then - log_info "已删除文件: $file_path" + + log_info "📂 [检测] 将检查以下文件夹:" + for folder in "${folders_to_delete[@]}"; do + echo " 📁 $folder" + done + echo + + local deleted_count=0 + local skipped_count=0 + local error_count=0 + + # 删除指定文件夹 + for folder in "${folders_to_delete[@]}"; do + log_debug "🔍 [检查] 检查文件夹: $folder" + + if [ -d "$folder" ]; then + log_warn "⚠️ [警告] 发现文件夹存在,正在删除..." + if rm -rf "$folder"; then + log_info "✅ [成功] 已删除文件夹: $folder" + ((deleted_count++)) else - log_error "删除文件 $file_path 失败" + log_error "❌ [错误] 删除文件夹失败: $folder" + ((error_count++)) fi else - log_warn "文件不存在,跳过删除: $file_path" + log_warn "⏭️ [跳过] 文件夹不存在: $folder" + ((skipped_count++)) fi + echo done - # 清空指定文件夹内容 - log_debug "检查待清空文件夹: $folder_to_clean_contents" - if [ -d "$folder_to_clean_contents" ]; then - if find "$folder_to_clean_contents" -mindepth 1 -delete; then - log_info "已清空文件夹内容: $folder_to_clean_contents" - else - if [ -z "$(ls -A "$folder_to_clean_contents")" ]; then - log_info "文件夹 $folder_to_clean_contents 现在为空。" # 通常find成功即代表操作完成 - else - log_error "清空文件夹 $folder_to_clean_contents 内容失败 (部分或全部)。请检查权限或手动删除。" - fi - fi - else - log_warn "文件夹不存在,跳过清空: $folder_to_clean_contents" - fi + # 显示操作统计 + log_info "📊 [统计] 操作完成统计:" + echo " ✅ 成功删除: $deleted_count 个文件夹" + echo " ⏭️ 跳过处理: $skipped_count 个文件夹" + echo " ❌ 删除失败: $error_count 个文件夹" + echo - # 删除指定文件夹及其内容 - log_debug "检查待删除文件夹: $folder_to_delete_completely" - if [ -d "$folder_to_delete_completely" ]; then - if rm -rf "$folder_to_delete_completely"; then - log_info "已删除文件夹: $folder_to_delete_completely" - else - log_error "删除文件夹 $folder_to_delete_completely 失败" - fi + if [ $deleted_count -gt 0 ]; then + log_info "🎉 [完成] Cursor 防掉试用Pro文件夹删除完成!" else - log_warn "文件夹不存在,跳过删除: $folder_to_delete_completely" + log_warn "🤔 [提示] 未找到需要删除的文件夹,可能已经清理过了" fi + echo +} - log_info "Cursor 初始化清理完成。" +# 📝 原有的 Cursor 初始化函数(已暂时禁用) +cursor_initialize_cleanup_disabled() { + log_warn "⚠️ [提示] 原有的机器码修改功能已暂时禁用" + log_info "📋 [说明] 当前版本专注于删除文件夹功能,机器码修改功能已屏蔽" + echo } # 获取当前用户 @@ -1286,127 +1291,71 @@ main() { ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝ " echo -e "${BLUE}================================${NC}" - echo -e "${GREEN} Cursor 启动工具 ${NC}" - echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】 ${NC}" - echo -e "${YELLOW} 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" + echo -e "${GREEN}🚀 Cursor 防掉试用Pro删除工具 ${NC}" + echo -e "${YELLOW}📱 关注公众号【煎饼果子卷AI】 ${NC}" + echo -e "${YELLOW}🤝 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" echo -e "${BLUE}================================${NC}" echo - echo -e "${YELLOW} [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 ${NC}" + echo -e "${YELLOW}💰 [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 ${NC}" echo - echo -e "${YELLOW}[重要提示]${NC} 本工具默认会修改系统 MAC 地址 (临时) 并修改 JS 文件以重置设备标识。" - echo -e "${YELLOW}[重要提示]${NC} 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】" + echo -e "${YELLOW}💡 [重要提示]${NC} 本工具专注于删除Cursor试用相关文件夹,暂时屏蔽机器码修改功能。" + echo -e "${YELLOW}💡 [重要提示]${NC} 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】" echo - # 执行主要功能 + # 🚀 执行主要功能 check_permissions check_and_kill_cursor - - # 执行 Cursor 初始化清理 - # cursor_initialize_cleanup - - backup_config - - # 新增:默认执行系统 MAC 地址修改 - change_system_mac_address || true - - # 执行主程序文件修改 - log_info "正在执行主程序文件修改..." - - # 使用子shell执行修改,避免错误导致整个脚本退出 - ( - if modify_cursor_app_files; then - log_info "主程序文件修改成功!" - else - log_warn "主程序文件修改失败,但配置文件修改可能已成功" - log_warn "如果重启后 Cursor 仍然提示设备被禁用,请重新运行此脚本" - fi - ) - - # 恢复错误处理 - set -e - show_file_tree - show_follow_info + # 🎯 执行 Cursor 防掉试用Pro删除文件夹功能 + log_info "🚀 [开始] 开始执行核心功能..." + remove_cursor_trial_folders - # 直接执行禁用自动更新 - disable_auto_update + # 🚫 以下功能已暂时屏蔽 + log_warn "⚠️ [提示] 以下功能已暂时屏蔽:" + log_info "📋 [说明] - 配置文件备份和修改" + log_info "📋 [说明] - 系统MAC地址修改" + log_info "📋 [说明] - 主程序文件修改" + log_info "📋 [说明] 当前版本专注于删除文件夹功能" + echo - log_info "请重启 Cursor 以应用新的配置" + # 🎉 显示操作完成信息 + echo + log_info "🎉 [完成] Cursor 防掉试用Pro删除操作已完成!" + echo - # 显示最后的提示信息 - show_follow_info + # 📱 显示公众号信息 + echo -e "${GREEN}================================${NC}" + echo -e "${YELLOW}📱 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) ${NC}" + echo -e "${GREEN}================================${NC}" + echo + log_info "🚀 [提示] 现在可以重新启动 Cursor 尝试使用了!" + echo - # 提供修复选项(移到最后) + # 🚫 以下功能已暂时屏蔽 + log_warn "⚠️ [提示] 以下功能已暂时屏蔽:" + log_info "📋 [说明] - 自动更新禁用功能" + log_info "📋 [说明] - 应用修复功能" + log_info "📋 [说明] 如需恢复这些功能,请联系开发者" echo - log_warn "Cursor 修复选项" - - # 使用新的菜单选择函数 - select_menu_option "请使用上下箭头选择,按Enter确认:" "忽略 - 不执行修复操作|修复模式 - 恢复原始的 Cursor 安装" 0 - fix_choice=$? - - # 记录日志以便调试 - echo "[INPUT_DEBUG] 修复选项选择: $fix_choice" >> "$LOG_FILE" - - # 确保脚本不会因为输入问题而终止 - set +e - - # 处理用户选择 - 索引1对应"修复模式"选项 - if [ "$fix_choice" = "1" ]; then - log_info "您选择了修复模式" - # 使用子shell执行清理,避免错误导致整个脚本退出 - ( - if clean_cursor_app; then - log_info "Cursor 已恢复到原始状态" - log_info "如果您需要应用ID修改,请重新运行此脚本" - else - log_warn "未能找到备份,无法自动恢复" - log_warn "建议重新安装 Cursor" - fi - ) - else - log_info "已跳过修复操作" - fi - # 恢复错误处理 - set -e + # 🎉 脚本执行完成 + log_info "🎉 [完成] 所有操作已完成!" + echo + log_info "💡 [提示] 如果需要恢复机器码修改功能,请联系开发者" + log_warn "⚠️ [注意] 重启 Cursor 后生效" + echo + log_info "🚀 [下一步] 现在可以启动 Cursor 尝试使用了!" + echo # 记录脚本完成信息 - log_info "脚本执行完成" - echo "========== Cursor ID 修改工具日志结束 $(date) ==========" >> "$LOG_FILE" + log_info "📝 [日志] 脚本执行完成" + echo "========== Cursor 防掉试用Pro删除工具日志结束 $(date) ==========" >> "$LOG_FILE" # 显示日志文件位置 echo - log_info "详细日志已保存到: $LOG_FILE" + log_info "📄 [日志] 详细日志已保存到: $LOG_FILE" echo "如遇问题请将此日志文件提供给开发者以协助排查" echo - - # 添加修复"应用已损坏"选项 - echo - log_warn "应用修复选项" - - # 使用新的菜单选择函数 - select_menu_option "请使用上下箭头选择,按Enter确认:" "忽略 - 不执行修复操作|修复"应用已损坏"问题 - 解决macOS提示应用已损坏无法打开的问题" 0 - damaged_choice=$? - - echo "[INPUT_DEBUG] 应用修复选项选择: $damaged_choice" >> "$LOG_FILE" - - set +e - - # 处理用户选择 - 索引1对应"修复应用已损坏"选项 - if [ "$damaged_choice" = "1" ]; then - log_info "您选择了修复"应用已损坏"问题" - ( - if fix_damaged_app; then - log_info "修复"应用已损坏"问题完成" - else - log_warn "修复"应用已损坏"问题失败" - fi - ) - else - log_info "已跳过应用修复操作" - fi - - set -e } # 执行主函数 diff --git a/scripts/run/cursor_win_id_modifier.ps1 b/scripts/run/cursor_win_id_modifier.ps1 index 4e2cb37..7a23ffe 100644 --- a/scripts/run/cursor_win_id_modifier.ps1 +++ b/scripts/run/cursor_win_id_modifier.ps1 @@ -13,68 +13,85 @@ $NC = "`e[0m" $STORAGE_FILE = "$env:APPDATA\Cursor\User\globalStorage\storage.json" $BACKUP_DIR = "$env:APPDATA\Cursor\User\globalStorage\backups" -# 新增 Cursor 初始化函数 -function Cursor-初始化 { - Write-Host "$GREEN[信息]$NC 正在执行 Cursor 初始化清理..." - $BASE_PATH = "$env:APPDATA\Cursor\User" - - $filesToDelete = @( - (Join-Path -Path $BASE_PATH -ChildPath "globalStorage\\state.vscdb"), - (Join-Path -Path $BASE_PATH -ChildPath "globalStorage\\state.vscdb.backup") +# 🚀 新增 Cursor 防掉试用Pro删除文件夹功能 +function Remove-CursorTrialFolders { + Write-Host "" + Write-Host "$GREEN🎯 [核心功能]$NC 正在执行 Cursor 防掉试用Pro删除文件夹..." + Write-Host "$BLUE📋 [说明]$NC 此功能将删除指定的Cursor相关文件夹以重置试用状态" + Write-Host "" + + # 定义需要删除的文件夹路径 + $foldersToDelete = @() + + # Windows Administrator 用户路径 + $adminPaths = @( + "C:\Users\Administrator\.cursor", + "C:\Users\Administrator\AppData\Roaming\Cursor" ) - - $folderToCleanContents = Join-Path -Path $BASE_PATH -ChildPath "History" - $folderToDeleteCompletely = Join-Path -Path $BASE_PATH -ChildPath "workspaceStorage" - Write-Host "$BLUE[调试]$NC 基础路径: $BASE_PATH" + # 当前用户路径 + $currentUserPaths = @( + "$env:USERPROFILE\.cursor", + "$env:APPDATA\Cursor" + ) + + # 合并所有路径 + $foldersToDelete += $adminPaths + $foldersToDelete += $currentUserPaths - # 删除指定文件 - foreach ($file in $filesToDelete) { - Write-Host "$BLUE[调试]$NC 检查文件: $file" - if (Test-Path $file) { + Write-Host "$BLUE📂 [检测]$NC 将检查以下文件夹:" + foreach ($folder in $foldersToDelete) { + Write-Host " 📁 $folder" + } + Write-Host "" + + $deletedCount = 0 + $skippedCount = 0 + $errorCount = 0 + + # 删除指定文件夹 + foreach ($folder in $foldersToDelete) { + Write-Host "$BLUE🔍 [检查]$NC 检查文件夹: $folder" + + if (Test-Path $folder) { try { - Remove-Item -Path $file -Force -ErrorAction Stop - Write-Host "$GREEN[成功]$NC 已删除文件: $file" + Write-Host "$YELLOW⚠️ [警告]$NC 发现文件夹存在,正在删除..." + Remove-Item -Path $folder -Recurse -Force -ErrorAction Stop + Write-Host "$GREEN✅ [成功]$NC 已删除文件夹: $folder" + $deletedCount++ } catch { - Write-Host "$RED[错误]$NC 删除文件 $file 失败: $($_.Exception.Message)" + Write-Host "$RED❌ [错误]$NC 删除文件夹失败: $folder" + Write-Host "$RED💥 [详情]$NC 错误信息: $($_.Exception.Message)" + $errorCount++ } } else { - Write-Host "$YELLOW[警告]$NC 文件不存在,跳过删除: $file" + Write-Host "$YELLOW⏭️ [跳过]$NC 文件夹不存在: $folder" + $skippedCount++ } + Write-Host "" } - # 清空指定文件夹内容 - Write-Host "$BLUE[调试]$NC 检查待清空文件夹: $folderToCleanContents" - if (Test-Path $folderToCleanContents) { - try { - # 获取子项进行删除,以避免删除 History 文件夹本身 - Get-ChildItem -Path $folderToCleanContents -Recurse | Remove-Item -Recurse -Force -ErrorAction Stop - Write-Host "$GREEN[成功]$NC 已清空文件夹内容: $folderToCleanContents" - } - catch { - Write-Host "$RED[错误]$NC 清空文件夹 $folderToCleanContents 内容失败: $($_.Exception.Message)" - } - } else { - Write-Host "$YELLOW[警告]$NC 文件夹不存在,跳过清空: $folderToCleanContents" - } + # 显示操作统计 + Write-Host "$GREEN📊 [统计]$NC 操作完成统计:" + Write-Host " ✅ 成功删除: $deletedCount 个文件夹" + Write-Host " ⏭️ 跳过处理: $skippedCount 个文件夹" + Write-Host " ❌ 删除失败: $errorCount 个文件夹" + Write-Host "" - # 删除指定文件夹及其内容 - Write-Host "$BLUE[调试]$NC 检查待删除文件夹: $folderToDeleteCompletely" - if (Test-Path $folderToDeleteCompletely) { - try { - Remove-Item -Path $folderToDeleteCompletely -Recurse -Force -ErrorAction Stop - Write-Host "$GREEN[成功]$NC 已删除文件夹: $folderToDeleteCompletely" - } - catch { - Write-Host "$RED[错误]$NC 删除文件夹 $folderToDeleteCompletely 失败: $($_.Exception.Message)" - } + if ($deletedCount -gt 0) { + Write-Host "$GREEN🎉 [完成]$NC Cursor 防掉试用Pro文件夹删除完成!" } else { - Write-Host "$YELLOW[警告]$NC 文件夹不存在,跳过删除: $folderToDeleteCompletely" + Write-Host "$YELLOW🤔 [提示]$NC 未找到需要删除的文件夹,可能已经清理过了" } + Write-Host "" +} - Write-Host "$GREEN[信息]$NC Cursor 初始化清理完成。" - Write-Host "" # 添加空行以改善输出格式 +# 📝 原有的 Cursor 初始化函数(已暂时禁用) +function Cursor-初始化-已禁用 { + Write-Host "$YELLOW⚠️ [提示]$NC 原有的机器码修改功能已暂时禁用" + Write-Host "$BLUE📋 [说明]$NC 当前版本专注于删除文件夹功能,机器码修改功能已屏蔽" + Write-Host "" } # 检查管理员权限 @@ -104,12 +121,12 @@ Write-Host @" "@ Write-Host "$BLUE================================$NC" -Write-Host "$GREEN Cursor 设备ID 修改工具 $NC" -Write-Host "$YELLOW 关注公众号【煎饼果子卷AI】 $NC" -Write-Host "$YELLOW 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) $NC" -Write-Host "$YELLOW [重要提示] 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】 $NC" +Write-Host "$GREEN🚀 Cursor 防掉试用Pro删除工具 $NC" +Write-Host "$YELLOW📱 关注公众号【煎饼果子卷AI】 $NC" +Write-Host "$YELLOW🤝 一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) $NC" +Write-Host "$YELLOW💡 [重要提示] 本工具免费,如果对您有帮助,请关注公众号【煎饼果子卷AI】 $NC" Write-Host "" -Write-Host "$YELLOW [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 $NC" +Write-Host "$YELLOW💰 [小小广告] 出售CursorPro教育号一年质保三个月,有需要找我(86),WeChat:JavaRookie666 $NC" Write-Host "$BLUE================================$NC" # 获取并显示 Cursor 版本 @@ -150,17 +167,18 @@ function Get-CursorVersion { $cursorVersion = Get-CursorVersion Write-Host "" -Write-Host "$YELLOW[重要提示]$NC 最新的 1.0.x (以支持)" +Write-Host "$YELLOW💡 [重要提示]$NC 最新的 1.0.x 版本已支持" +Write-Host "$BLUE📋 [功能说明]$NC 本工具专注于删除Cursor试用相关文件夹,暂时屏蔽机器码修改功能" Write-Host "" -# 检查并关闭 Cursor 进程 -Write-Host "$GREEN[信息]$NC 检查 Cursor 进程..." +# 🔍 检查并关闭 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 | + Write-Host "$BLUE🔍 [调试]$NC 正在获取 $processName 进程详细信息:" + Get-WmiObject Win32_Process -Filter "name='$processName'" | + Select-Object ProcessId, ExecutablePath, CommandLine | Format-List } @@ -168,66 +186,75 @@ function Get-ProcessDetails { $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 正在运行" + Write-Host "$YELLOW⚠️ [警告]$NC 发现 $processName 正在运行" Get-ProcessDetails $processName - - Write-Host "$YELLOW[警告]$NC 尝试关闭 $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" + Write-Host "$RED❌ [错误]$NC 在 $MAX_RETRIES 次尝试后仍无法关闭 $processName" Get-ProcessDetails $processName - Write-Host "$RED[错误]$NC 请手动关闭进程后重试" + Write-Host "$RED💥 [错误]$NC 请手动关闭进程后重试" Read-Host "按回车键退出" exit 1 } - Write-Host "$YELLOW[警告]$NC 等待进程关闭,尝试 $retryCount/$MAX_RETRIES..." + Write-Host "$YELLOW⏳ [等待]$NC 等待进程关闭,尝试 $retryCount/$MAX_RETRIES..." Start-Sleep -Seconds $WAIT_TIME } - Write-Host "$GREEN[信息]$NC $processName 已成功关闭" + Write-Host "$GREEN✅ [成功]$NC $processName 已成功关闭" } } -# 关闭所有 Cursor 进程 +# 🚀 关闭所有 Cursor 进程 Close-CursorProcess "Cursor" Close-CursorProcess "cursor" -# 执行 Cursor 初始化清理 -# Cursor-初始化 +# 🎯 执行 Cursor 防掉试用Pro删除文件夹功能 +Write-Host "$GREEN🚀 [开始]$NC 开始执行核心功能..." +Remove-CursorTrialFolders + +# 📝 以下机器码修改相关功能已暂时屏蔽 +Write-Host "$YELLOW⚠️ [提示]$NC 机器码修改功能已暂时屏蔽,专注于文件夹删除功能" +Write-Host "$BLUE📋 [说明]$NC 如需恢复机器码修改功能,请联系开发者" +Write-Host "" -# 创建备份目录 +<# +# 🚫 已屏蔽:创建备份目录 if (-not (Test-Path $BACKUP_DIR)) { New-Item -ItemType Directory -Path $BACKUP_DIR | Out-Null } -# 备份现有配置 +# 🚫 已屏蔽:备份现有配置 if (Test-Path $STORAGE_FILE) { - Write-Host "$GREEN[信息]$NC 正在备份配置文件..." + 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..." +# 🚫 已屏蔽:生成新的 ID +Write-Host "$GREEN🔄 [生成]$NC 正在生成新的 ID..." +#> -# 在颜色定义后添加此函数 +<# +# 🚫 已屏蔽:随机ID生成函数 function Get-RandomHex { param ( [int]$length ) - + $bytes = New-Object byte[] ($length) $rng = [System.Security.Cryptography.RNGCryptoServiceProvider]::new() $rng.GetBytes($bytes) @@ -236,7 +263,7 @@ function Get-RandomHex { return $hexString } -# 改进 ID 生成函数 +# 🚫 已屏蔽:改进 ID 生成函数 function New-StandardMachineId { $template = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" $result = $template -replace '[xy]', { @@ -248,7 +275,7 @@ function New-StandardMachineId { return $result } -# 在生成 ID 时使用新函数 +# 🚫 已屏蔽:在生成 ID 时使用新函数 $MAC_MACHINE_ID = New-StandardMachineId $UUID = [System.Guid]::NewGuid().ToString() # 将 auth0|user_ 转换为字节数组的十六进制 @@ -258,350 +285,57 @@ $prefixHex = -join ($prefixBytes | ForEach-Object { '{0:x2}' -f $_ }) $randomPart = Get-RandomHex -length 32 $MACHINE_ID = "$prefixHex$randomPart" $SQM_ID = "{$([System.Guid]::NewGuid().ToString().ToUpper())}" +#> -# 在Update-MachineGuid函数前添加权限检查 +<# +# 🚫 已屏蔽:在Update-MachineGuid函数前添加权限检查 if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { - Write-Host "$RED[错误]$NC 请使用管理员权限运行此脚本" + Write-Host "$RED❌ [错误]$NC 请使用管理员权限运行此脚本" Start-Process powershell "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit } - -function Update-MachineGuid { - try { - # 检查注册表路径是否存在,不存在则创建 - $registryPath = "HKLM:\SOFTWARE\Microsoft\Cryptography" - if (-not (Test-Path $registryPath)) { - Write-Host "$YELLOW[警告]$NC 注册表路径不存在: $registryPath,正在创建..." - New-Item -Path $registryPath -Force | Out-Null - Write-Host "$GREEN[信息]$NC 注册表路径创建成功" - } - - # 获取当前的 MachineGuid,如果不存在则使用空字符串作为默认值 - $originalGuid = "" - try { - $currentGuid = Get-ItemProperty -Path $registryPath -Name MachineGuid -ErrorAction SilentlyContinue - if ($currentGuid) { - $originalGuid = $currentGuid.MachineGuid - Write-Host "$GREEN[信息]$NC 当前注册表值:" - Write-Host "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography" - Write-Host " MachineGuid REG_SZ $originalGuid" - } else { - Write-Host "$YELLOW[警告]$NC MachineGuid 值不存在,将创建新值" - } - } catch { - Write-Host "$YELLOW[警告]$NC 获取 MachineGuid 失败: $($_.Exception.Message)" - } - - # 创建备份目录(如果不存在) - if (-not (Test-Path $BACKUP_DIR)) { - New-Item -ItemType Directory -Path $BACKUP_DIR -Force | Out-Null - } - - # 创建备份文件(仅当原始值存在时) - if ($originalGuid) { - $backupFile = "$BACKUP_DIR\MachineGuid_$(Get-Date -Format 'yyyyMMdd_HHmmss').reg" - $backupResult = Start-Process "reg.exe" -ArgumentList "export", "`"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography`"", "`"$backupFile`"" -NoNewWindow -Wait -PassThru - - if ($backupResult.ExitCode -eq 0) { - Write-Host "$GREEN[信息]$NC 注册表项已备份到:$backupFile" - } else { - Write-Host "$YELLOW[警告]$NC 备份创建失败,继续执行..." - } - } - - # 生成新GUID - $newGuid = [System.Guid]::NewGuid().ToString() - - # 更新或创建注册表值 - Set-ItemProperty -Path $registryPath -Name MachineGuid -Value $newGuid -Force -ErrorAction Stop - - # 验证更新 - $verifyGuid = (Get-ItemProperty -Path $registryPath -Name MachineGuid -ErrorAction Stop).MachineGuid - if ($verifyGuid -ne $newGuid) { - throw "注册表验证失败:更新后的值 ($verifyGuid) 与预期值 ($newGuid) 不匹配" - } - - Write-Host "$GREEN[信息]$NC 注册表更新成功:" - Write-Host "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography" - Write-Host " MachineGuid REG_SZ $newGuid" - return $true - } - catch { - Write-Host "$RED[错误]$NC 注册表操作失败:$($_.Exception.Message)" - - # 尝试恢复备份(如果存在) - if (($backupFile -ne $null) -and (Test-Path $backupFile)) { - Write-Host "$YELLOW[恢复]$NC 正在从备份恢复..." - $restoreResult = Start-Process "reg.exe" -ArgumentList "import", "`"$backupFile`"" -NoNewWindow -Wait -PassThru - - if ($restoreResult.ExitCode -eq 0) { - Write-Host "$GREEN[恢复成功]$NC 已还原原始注册表值" - } else { - Write-Host "$RED[错误]$NC 恢复失败,请手动导入备份文件:$backupFile" - } - } else { - Write-Host "$YELLOW[警告]$NC 未找到备份文件或备份创建失败,无法自动恢复" - } - return $false - } +#> + +<# +# 🚫 已屏蔽:Update-MachineGuid 函数 +function Update-MachineGuid-已屏蔽 { + Write-Host "$YELLOW⚠️ [提示]$NC 注册表修改功能已暂时屏蔽" + Write-Host "$BLUE📋 [说明]$NC 当前版本专注于删除文件夹功能" + return $false } +#> -# 创建或更新配置文件 -Write-Host "$GREEN[信息]$NC 正在更新配置..." - -try { - # 检查配置文件是否存在 - if (-not (Test-Path $STORAGE_FILE)) { - Write-Host "$RED[错误]$NC 未找到配置文件: $STORAGE_FILE" - Write-Host "$YELLOW[提示]$NC 请先安装并运行一次 Cursor 后再使用此脚本" - Read-Host "按回车键退出" - exit 1 - } +<# +# 🚫 已屏蔽:创建或更新配置文件 +Write-Host "$YELLOW⚠️ [提示]$NC 配置文件修改功能已暂时屏蔽" +Write-Host "$BLUE📋 [说明]$NC 当前版本专注于删除文件夹功能,不修改配置文件" +#> - # 读取现有配置文件 - try { - $originalContent = Get-Content $STORAGE_FILE -Raw -Encoding UTF8 - - # 将 JSON 字符串转换为 PowerShell 对象 - $config = $originalContent | ConvertFrom-Json - - # 备份当前值 - $oldValues = @{ - 'machineId' = $config.'telemetry.machineId' - 'macMachineId' = $config.'telemetry.macMachineId' - 'devDeviceId' = $config.'telemetry.devDeviceId' - 'sqmId' = $config.'telemetry.sqmId' - } - - # 更新特定的值 - $config.'telemetry.machineId' = $MACHINE_ID - $config.'telemetry.macMachineId' = $MAC_MACHINE_ID - $config.'telemetry.devDeviceId' = $UUID - $config.'telemetry.sqmId' = $SQM_ID - - # 将更新后的对象转换回 JSON 并保存 - $updatedJson = $config | ConvertTo-Json -Depth 10 - [System.IO.File]::WriteAllText( - [System.IO.Path]::GetFullPath($STORAGE_FILE), - $updatedJson, - [System.Text.Encoding]::UTF8 - ) - Write-Host "$GREEN[信息]$NC 成功更新配置文件" - } catch { - # 如果出错,尝试恢复原始内容 - if ($originalContent) { - [System.IO.File]::WriteAllText( - [System.IO.Path]::GetFullPath($STORAGE_FILE), - $originalContent, - [System.Text.Encoding]::UTF8 - ) - } - throw "处理 JSON 失败: $_" - } - # 直接执行更新 MachineGuid,不再询问 - Update-MachineGuid - # 显示结果 - 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 "$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" - Write-Host "$YELLOW 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) $NC" - Write-Host "$GREEN================================$NC" - Write-Host "" - Write-Host "$GREEN[信息]$NC 请重启 Cursor 以应用新的配置" - Write-Host "" - - # 询问是否要禁用自动更新 - Write-Host "" - Write-Host "$YELLOW[询问]$NC 是否要禁用 Cursor 自动更新功能?" - Write-Host "0) 否 - 保持默认设置 (按回车键)" - Write-Host "1) 是 - 禁用自动更新" - $choice = Read-Host "请输入选项 (0)" - - if ($choice -eq "1") { - Write-Host "" - Write-Host "$GREEN[信息]$NC 正在处理自动更新..." - $updaterPath = "$env:LOCALAPPDATA\cursor-updater" - - # 定义手动设置教程 - function Show-ManualGuide { - Write-Host "" - Write-Host "$YELLOW[警告]$NC 自动设置失败,请尝试手动操作:" - Write-Host "$YELLOW手动禁用更新步骤:$NC" - Write-Host "1. 以管理员身份打开 PowerShell" - Write-Host "2. 复制粘贴以下命令:" - Write-Host "$BLUE命令1 - 删除现有目录(如果存在):$NC" - Write-Host "Remove-Item -Path `"$updaterPath`" -Force -Recurse -ErrorAction SilentlyContinue" - Write-Host "" - Write-Host "$BLUE命令2 - 创建阻止文件:$NC" - Write-Host "New-Item -Path `"$updaterPath`" -ItemType File -Force | Out-Null" - Write-Host "" - Write-Host "$BLUE命令3 - 设置只读属性:$NC" - Write-Host "Set-ItemProperty -Path `"$updaterPath`" -Name IsReadOnly -Value `$true" - Write-Host "" - Write-Host "$BLUE命令4 - 设置权限(可选):$NC" - Write-Host "icacls `"$updaterPath`" /inheritance:r /grant:r `"`$($env:USERNAME):(R)`"" - Write-Host "" - Write-Host "$YELLOW验证方法:$NC" - Write-Host "1. 运行命令:Get-ItemProperty `"$updaterPath`"" - Write-Host "2. 确认 IsReadOnly 属性为 True" - Write-Host "3. 运行命令:icacls `"$updaterPath`"" - Write-Host "4. 确认只有读取权限" - Write-Host "" - Write-Host "$YELLOW[提示]$NC 完成后请重启 Cursor" - } - - try { - # 检查cursor-updater是否存在 - if (Test-Path $updaterPath) { - # 如果是文件,说明已经创建了阻止更新 - if ((Get-Item $updaterPath) -is [System.IO.FileInfo]) { - Write-Host "$GREEN[信息]$NC 已创建阻止更新文件,无需再次阻止" - return - } - # 如果是目录,尝试删除 - else { - try { - Remove-Item -Path $updaterPath -Force -Recurse -ErrorAction Stop - Write-Host "$GREEN[信息]$NC 成功删除 cursor-updater 目录" - } - catch { - Write-Host "$RED[错误]$NC 删除 cursor-updater 目录失败" - Show-ManualGuide - return - } - } - } - - # 创建阻止文件 - try { - New-Item -Path $updaterPath -ItemType File -Force -ErrorAction Stop | Out-Null - Write-Host "$GREEN[信息]$NC 成功创建阻止文件" - } - catch { - Write-Host "$RED[错误]$NC 创建阻止文件失败" - Show-ManualGuide - return - } - - # 设置文件权限 - try { - # 设置只读属性 - Set-ItemProperty -Path $updaterPath -Name IsReadOnly -Value $true -ErrorAction Stop - - # 使用 icacls 设置权限 - $result = Start-Process "icacls.exe" -ArgumentList "`"$updaterPath`" /inheritance:r /grant:r `"$($env:USERNAME):(R)`"" -Wait -NoNewWindow -PassThru - if ($result.ExitCode -ne 0) { - throw "icacls 命令失败" - } - - Write-Host "$GREEN[信息]$NC 成功设置文件权限" - } - catch { - Write-Host "$RED[错误]$NC 设置文件权限失败" - Show-ManualGuide - return - } - - # 验证设置 - try { - $fileInfo = Get-ItemProperty $updaterPath - if (-not $fileInfo.IsReadOnly) { - Write-Host "$RED[错误]$NC 验证失败:文件权限设置可能未生效" - Show-ManualGuide - return - } - } - catch { - Write-Host "$RED[错误]$NC 验证设置失败" - Show-ManualGuide - return - } - - Write-Host "$GREEN[信息]$NC 成功禁用自动更新" - } - catch { - Write-Host "$RED[错误]$NC 发生未知错误: $_" - Show-ManualGuide - } - } - else { - Write-Host "$GREEN[信息]$NC 保持默认设置,不进行更改" - } +# 🎉 显示操作完成信息 +Write-Host "" +Write-Host "$GREEN🎉 [完成]$NC Cursor 防掉试用Pro删除操作已完成!" +Write-Host "" - # 保留有效的注册表更新 - Update-MachineGuid +# 📱 显示公众号信息 +Write-Host "$GREEN================================$NC" +Write-Host "$YELLOW📱 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识(脚本免费、关注公众号加群有更多技巧和大佬) $NC" +Write-Host "$GREEN================================$NC" +Write-Host "" +Write-Host "$GREEN🚀 [提示]$NC 现在可以重新启动 Cursor 尝试使用了!" +Write-Host "" -} catch { - Write-Host "$RED[错误]$NC 主要操作失败: $_" - Write-Host "$YELLOW[尝试]$NC 使用备选方法..." - - try { - # 备选方法:使用 Add-Content - $tempFile = [System.IO.Path]::GetTempFileName() - $config | ConvertTo-Json | Set-Content -Path $tempFile -Encoding UTF8 - Copy-Item -Path $tempFile -Destination $STORAGE_FILE -Force - Remove-Item -Path $tempFile - Write-Host "$GREEN[信息]$NC 使用备选方法成功写入配置" - } catch { - Write-Host "$RED[错误]$NC 所有尝试都失败了" - Write-Host "错误详情: $_" - Write-Host "目标文件: $STORAGE_FILE" - Write-Host "请确保您有足够的权限访问该文件" - Read-Host "按回车键退出" - exit 1 - } -} +# 🚫 自动更新功能已暂时屏蔽 +Write-Host "$YELLOW⚠️ [提示]$NC 自动更新禁用功能已暂时屏蔽" +Write-Host "$BLUE📋 [说明]$NC 当前版本专注于删除文件夹功能" +Write-Host "" +# 🎉 脚本执行完成 +Write-Host "$GREEN🎉 [完成]$NC 所有操作已完成!" +Write-Host "" +Write-Host "$BLUE💡 [提示]$NC 如果需要恢复机器码修改功能,请联系开发者" +Write-Host "$YELLOW⚠️ [注意]$NC 重启 Cursor 后生效" +Write-Host "" +Write-Host "$GREEN🚀 [下一步]$NC 现在可以启动 Cursor 尝试使用了!" Write-Host "" Read-Host "按回车键退出" -exit 0 - -# 在文件写入部分修改 -function Write-ConfigFile { - param($config, $filePath) - - try { - # 使用 UTF8 无 BOM 编码 - $utf8NoBom = New-Object System.Text.UTF8Encoding $false - $jsonContent = $config | ConvertTo-Json -Depth 10 - - # 统一使用 LF 换行符 - $jsonContent = $jsonContent.Replace("`r`n", "`n") - - [System.IO.File]::WriteAllText( - [System.IO.Path]::GetFullPath($filePath), - $jsonContent, - $utf8NoBom - ) - - Write-Host "$GREEN[信息]$NC 成功写入配置文件(UTF8 无 BOM)" - } - catch { - throw "写入配置文件失败: $_" - } -} \ No newline at end of file +exit 0 \ No newline at end of file