# QuickPasterTool
**Repository Path**: java-and-net/quick-paster-tool
## Basic Information
- **Project Name**: QuickPasterTool
- **Description**: 一款支持保存剪切板内容、快速记录笔记的工具,采用.Net 10开发
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: Main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2022-03-25
- **Last Updated**: 2026-10-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 工具, Net10, Sqlite, tools
## README
QuickPasterTool
# :pray: 引用的开源项目:
1. ##### Sunny UI——Sunny UI.Net, 基于 C# .Net WinForm 开源控件库、工具类库、扩展类库、多页面开发框架。[SunnyUI.Net,GPL3.0开源协议](https://gitee.com/yhuse/SunnyUI)
# :exclamation: 本项目说明:
1、二次开发本项目时请遵照MIT开源协议,SunnyUI.Net框架采用的是GPL3.0开源协议,需要用到时请务必在项目介绍加上对应声明。
2、有bug欢迎提出issue!或进行评论
3、本系统95%页面基于SunnyUI.Net控件库进行创建,在此特别声明!
# :thought_balloon: 开发目的:
本软件以简洁、快、方便为宗旨,帮助用户快速记录下所需要的信息和突发的灵感,还可以通过本地加密存储的方式记录剪切板里的有用内容,在机器重启后或软件重新安装后可以快速导入、扫描已经存储的内容。支持通过 WebDAV 在多台设备之间双向合并同步,并具备在线自更新能力。
# :mag_right: 系统开发环境:
操作系统:Windows 10/11(x64)
开发工具:Microsoft Visual Studio 2022
数据库:SQLite(本地加密存储模式)
开发语言:C#语言
开发平台:.Net
开发框架:.Net 10
开发技术:.NET WinForm、SunnyUI 3.9.8
数据加密:PBKDF2-SHA256(密码哈希)+ AES-256-GCM(内容加密)
# :open_file_folder: 系统结构:
```tree
quick-paster-tool
├─ LICENSE
├─ logo.png
├─ QuickPaster
│ ├─ AppUserControl
│ │ ├─ ucClipboard.Designer.cs # 剪切板记录卡片控件
│ │ ├─ ucClipboard.cs
│ │ └─ ucClipboard.resx
│ ├─ Data
│ │ ├─ AppPaths.cs # 数据目录/数据库文件路径
│ │ ├─ AppSettings.cs # 偏好设置(按用户 JSON 持久化到 SQLite)
│ │ ├─ Crypto.cs # PBKDF2 + AES-256-GCM 加解密
│ │ ├─ Database.cs # SQLite 建库建表与增量迁移
│ │ ├─ Models.cs # User / ClipboardItem / Note 实体
│ │ ├─ Services.cs # 用户/剪切板/笔记 业务服务
│ │ ├─ SyncMerge.cs # 双向合并引擎(GUID 并集 + LWW)
│ │ ├─ UiPreferences.cs # 机器级主题/最近用户偏好(ui.json)
│ │ └─ UserSession.cs # 登录会话与改密码重加密
│ ├─ Forms
│ │ ├─ FrmChangePassword.Designer.cs # 修改密码对话框
│ │ ├─ FrmChangePassword.cs
│ │ ├─ FrmLogin.Designer.cs # 登录/注册窗体
│ │ ├─ FrmLogin.cs
│ │ ├─ FrmNoteEdit.Designer.cs # 新建/编辑笔记对话框(支持插入表情)
│ │ ├─ FrmNoteEdit.cs
│ ├─ Pages
│ │ ├─ PageClipboard.Designer.cs # 剪切板-内容管理页
│ │ ├─ PageClipboard.cs
│ │ ├─ PageClipboardSettings.Designer.cs # 剪切板-剪切板设置页
│ │ ├─ PageClipboardSettings.cs
│ │ ├─ PageNotes.Designer.cs # 灵感笔记-笔记管理页
│ │ ├─ PageNotes.cs
│ │ ├─ PagePreferences.Designer.cs # 个人中心-偏好设置页(主题/同步/更新)
│ │ ├─ PagePreferences.cs
│ ├─ Properties
│ │ ├─ PublishProfiles
│ │ ├─ Resources.Designer.cs
│ │ ├─ Resources.resx
│ │ ├─ Settings.Designer.cs
│ │ └─ Settings.settings
│ ├─ Sync
│ │ ├─ CloudSync.cs # 同步核心(下载→合并→上传)
│ │ ├─ UpdateChecker.cs # 在线更新检查/下载/静默安装
│ │ └─ WebDavSyncClient.cs # 轻量 WebDAV 客户端(PUT/GET/MKCOL)
│ ├─ ThemeColors.cs # 当前主题取色助手
│ ├─ ThemeManager.cs # 主题应用统一入口(内置/自定义色)
│ ├─ FrmMain.Designer.cs # 主窗体(侧边导航多页面框架)
│ ├─ FrmMain.cs
│ ├─ FrmMain.resx
│ ├─ logo.ico
│ ├─ Program.cs # 入口(单实例互斥 + 登录/主界面流转)
│ └─ QuickPaster.csproj
├─ installer
│ ├─ QuickPaster.iss # Inno Setup 安装包脚本
│ └─ publish-update.ps1 # 一键发布新版到 WebDAV(含在线更新清单)
└─ QuickPaster.sln
```
# :books: 系统功能模块汇总:
| 功能汇总 | | | |
| ---------- | --------- | ---------- | ---------------------------------------- |
| 个人中心 | 登录/注册 | 偏好设置 | 修改密码、在线检查更新 |
| 剪切板管理 | 内容管理 | 剪切板设置 | |
| 灵感笔记 | 笔记管理 | | |
| 数据同步 | WebDAV | 在线自更新 | 按账号分文件夹、双向合并、定时/退出同步 |
**已实现功能明细:**
- **个人中心**
- 登录/注册:本地账号体系,密码使用 PBKDF2-SHA256 加盐哈希存储,恒定时间比较防时序攻击;单实例运行互斥
- 偏好设置:界面主题(8 种内置主题 + 自定义颜色代码/色盘取色,全局生效并持久化)、关闭最小化到托盘、开机自启(可选自启动时不打开主窗口,静默运行在系统托盘)、全局热键自定义(点击输入框按下组合键即可)
- 修改密码:旧密码校验后重新派生密钥,事务内重加密全部剪切板记录与笔记
- 在线更新:检查 WebDAV 上的版本清单,发现新版本可下载并静默升级(可开关启动时自动检查)
- **剪切板管理**
- 内容管理:实时捕获剪切板文本并记录来源应用与时间(自动忽略上一账号遗留内容);搜索、一键复制回剪切板、收藏、单条删除、清空
- 剪切板设置:监听开关、重复内容过滤、启动/退出清空策略、最大记录条数自动清理(收藏不清理)
- **灵感笔记**
- 笔记管理:新建/编辑/删除/搜索(标题与内容),按更新时间排序,支持插入 emoji 表情
- **数据同步(WebDAV)**
- 备份按账号存放在“服务器地址/账号名/”子文件夹,不同账号云端互不混杂
- 立即同步(推荐):下载云端 → 双向合并 → 上传结果,两侧新增数据并集保留、零丢失(剪切板按行 GUID 并集,笔记/设置按更新时间新者胜)
- 自动同步:运行期间按间隔(1~60 分钟)定时合并同步,退出软件时自动同步
- 覆盖上传/覆盖恢复:整体替换模式,恢复前自动本地备份 quickpaster.pre-restore.bak
- **通用**
- 剪切板内容与笔记以 AES-256-GCM 加密存入 SQLite,密钥由登录密码派生、不落盘;各账号数据(含偏好设置)完全隔离
- 系统托盘(双击显示/右键菜单退出)、全局热键显示隐藏主界面
- 界面主题全局实时联动(主窗体、页面标题、卡片、导航选中色、登录窗口)
# :family: 项目作者:
**[codeRookie](https://gitee.com/coderokie)(本项目的灵感提供者)**
**[咖啡与网络(Java&Net)](https://gitee.com/java-and-net)(开发/维护团队)**
# :computer: 项目运行部署:
**方式一:安装包(推荐)**
发布目录 `publish/QuickPaster-Setup-2.0.1.exe` 为 Inno Setup 安装程序(内置 .NET 10 运行时,目标设备无需安装任何框架)。双击按向导安装,自动创建桌面/开始菜单快捷方式,自带卸载器(卸载不删除用户数据)。
**方式二:源码运行**
下载并安装 Microsoft Visual Studio 2022(含 .NET 10 SDK),打开 .sln 后缀格式文件运行。或使用命令行:
```bash
dotnet build QuickPaster.sln -c Release
dotnet run --project QuickPaster
```
首次启动后请先注册一个本地账号(账号密码仅保存在本机数据库中),之后每次登录即可解密查看历史记录。
# :rocket: 发布新版 / 在线更新
应用支持在线自更新:把新版安装包和 `update.json` 上传到 WebDAV 根目录,所有在线设备启动时即可收到更新提示并静默升级。一键发布(编译 + 打包 + 上传):
```powershell
powershell -File installer\publish-update.ps1 -DavUrl "https://你的WebDAV地址/dav/" -DavUser "账号" -DavPass "应用密码" -Version "2.0.2" -Notes "更新说明"
```
`update.json` 格式:`{ "version": "2.0.1", "url": "QuickPaster-Setup-2.0.1.exe", "notes": "更新说明" }`
[](https://gitee.com/java-and-net/quick-paster-tool)