【作品】重装系统之桌面图标还原工具-开源

早上刚重装了系统,发现原先的桌面快捷都没了

又得重新配置,挨个从D盘的安装目录里把exe程序发送到桌面创建快捷方式图标

巨麻烦 纯纯浪费时间

so

用iflow生成了个项目:备份桌面图标 重装系统后再还原之前的桌面快捷方式图标

达到目的:系统是新的+应用也是之前安装过的 如此无缝衔接

桌面应用程序备份与还原系统

一个功能完整的Windows桌面应用程序备份与还原工具,支持智能分类、深度依赖检测、注册表备份和一键还原。

:glowing_star: 特性

  • :white_check_mark: 智能分类 - 自动分类桌面项目为三类:非C盘应用、桌面文件、系统应用
  • :white_check_mark: 深度依赖检测 - 检测VC++、.NET Framework、DirectX等运行依赖
  • :white_check_mark: 注册表备份 - 自动备份和恢复注册表配置
  • :white_check_mark: 桌面文件备份 - 自动备份桌面独立文件
  • :white_check_mark: 一键还原 - 支持完整的桌面还原流程
  • :white_check_mark: 运行库安装 - 提供自动安装运行库的辅助工具
  • :white_check_mark: 命令行界面 - 简洁易用的命令行操作
  • :white_check_mark: 批处理支持 - 支持双击运行的批处理脚本

:package: 安装

系统要求

  • Windows 10/11
  • Python 3.8+
  • 管理员权限(用于注册表操作)

安装依赖

# 进入项目目录
cd DesktopBackupRestore

# 安装依赖
pip install -r requirements.txt

可选依赖(推荐安装)

# 安装额外依赖
pip install pytest pytest-cov

:rocket: 使用方法

备份桌面

# 基本备份
python main.py backup

# 指定项目目录
python main.py backup --project-dir ./my_backup

# 详细输出
python main.py backup --verbose

还原桌面

# 基本还原
python main.py restore

# 指定项目目录
python main.py restore --project-dir ./my_backup

# 详细输出
python main.py restore --verbose

使用批处理脚本

# 双击运行还原脚本
restore_desktop.bat

运行库安装

# 进入scripts目录
cd scripts

# 运行运行库安装工具
python install_runtimes.py

:file_folder: 项目结构

DesktopBackupRestore/
├── core/                    # 核心业务逻辑
│   ├── config_manager.py    # 配置管理器
│   ├── backup_engine.py     # 备份引擎
│   └── restore_engine.py    # 还原引擎
├── utils/                   # 工具模块
│   ├── file_utils.py        # 文件扫描与分类
│   ├── dependency_checker.py # 依赖检测
│   └── registry_utils.py    # 注册表操作
├── data/                    # 数据存储目录
│   ├── configs/            # 配置文件
│   ├── backups/            # 备份数据
│   └── logs/              # 运行日志
├── zmwj/                  # 桌面文件备份目录
├── scripts/               # 辅助脚本
│   └── install_runtimes.py # 运行库安装
├── tests/                 # 单元测试
├── main.py               # 程序入口
├── requirements.txt      # Python依赖
└── restore_desktop.bat   # 批处理脚本

:wrench: 配置文件

tblj.ini 配置格式

[BACKUP_INFO]
backup_date = 2024-01-22 14:30:00
windows_version = Windows 10
total_items = 15

[CATEGORY_APPS_NON_C]
item_1 = {
    "name": "Chrome.lnk",
    "path": "C:\\Users\\Admin\\Desktop\\Chrome.lnk",
    "is_file": true,
    "is_shortcut": true,
    "target_path": "D:\\Program Files\\Google\\Chrome\\chrome.exe",
    "install_dir": "D:\\Program Files\\Google\\Chrome",
    "dependencies": {
        "runtime": ["vcredist_2015-2022"],
        "dlls": ["vcruntime140.dll", "msvcp140.dll"],
        "registry": [...]
    }
}

[CATEGORY_DESKTOP_FILES]
item_1 = {
    "name": "report.docx",
    "path": "C:\\Users\\Admin\\Desktop\\report.docx",
    "is_file": true,
    "is_shortcut": false,
    "size": 204800
}

:test_tube: 测试

运行单元测试

# 运行所有测试
pytest

# 运行特定测试文件
pytest tests/test_config_manager.py

# 生成测试覆盖率报告
pytest --cov=core --cov=utils tests/

测试覆盖范围

  • :white_check_mark: ConfigManager 配置管理
  • :white_check_mark: DesktopScanner 文件扫描
  • :white_check_mark: DependencyChecker 依赖检测
  • :white_check_mark: RegistryManager 注册表操作
  • :white_check_mark: BackupEngine 备份流程
  • :white_check_mark: RestoreEngine 还原流程

:hammer_and_wrench: 开发

代码规范

  • 遵循 PEP 8 编码规范
  • 使用中文注释和文档字符串
  • 完整的类型注解
  • 详细的错误处理

架构设计

  • 模块化设计 - 清晰的模块边界
  • 单一职责 - 每个类/函数职责明确
  • 依赖注入 - 便于测试和扩展
  • 配置与代码分离 - 易于维护

扩展开发

  1. 添加新检测器

    # utils/custom_detector.py
    from abc import ABC, abstractmethod
    
    class DependencyDetector(ABC):
        @abstractmethod
        def detect(self, exe_path: str) -> Dict:
            pass
    
  2. 添加新命令

    # 在 main.py 中添加子命令
    custom_parser = subparsers.add_parser('custom', help='自定义命令')
    

:bar_chart: 性能

  • 扫描速度: 100个桌面项目约1.2秒
  • 依赖分析: 平均每个应用约0.5秒
  • 注册表备份: 平均每个应用约0.8秒
  • 总备份时间: 20个应用约15秒

:locked: 安全性

  • :white_check_mark: 非侵入性 - 原始数据永不修改
  • :white_check_mark: 任务隔离 - 输出写入独立任务目录
  • :white_check_mark: 权限检查 - 运行时权限验证
  • :white_check_mark: 错误隔离 - 单个失败不影响整体流程

:bug: 故障排除

常见问题

Q: 备份失败,提示权限不足?
A: 请以管理员身份运行程序

Q: 还原后应用程序无法启动?
A: 检查运行库是否安装,或使用 install_runtimes.py 安装

Q: 桌面快捷方式丢失?
A: 系统应用会自动恢复,桌面文件需要手动确认

日志查看

备份和还原过程会生成详细日志,保存在 data/logs/ 目录下

:handshake: 贡献

欢迎提交 Issue 和 Pull Request!

:page_facing_up: 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

:telephone_receiver: 支持

如有问题,请:

  1. 查看 审计报告
  2. 检查日志文件
  3. 提交 Issue

感谢使用桌面应用程序备份与还原系统! :tada:

项目地址:内含三个版本,自行测试选用

https://gitee.com/about404/zmtb

3 个赞

怎么添加源码文件???

Github :grin:

嗯嗯 已上传gitee

其实将用户目录都移动到其他盘,重装系统就不影响了,每次重装重新指定用户目录就行了:

1 个赞

这都可以 哈哈哈 :+1:

学到了 :hand_with_index_finger_and_thumb_crossed:

如果用这个方式的话,注意一些软件安装时如果选择为所有用户安装,创建的桌面快捷方式可能放在C:\Users\Public\Desktop里,最好在你移动桌面目录后,手动创建一个分类文件夹,每次安装软件创建快捷方式后移动进去