Skip to content

LeonspaceX/Clipboard-access-control

Repository files navigation

Clipboard-Access-Ctrl

基于 SetWindowsHookEx 的剪切板访问管控程序,当任意程序尝试读取剪贴板时弹窗询问你,由你决定允许还是拒绝。

⚠️ 温馨提示:本项目为实验性项目。由于项目使用全局钩子实现剪切板 API 拦截,虽在测试环境表现良好,但仍有可能诱发预期之外的问题,请务必不要在生产环境中使用!

项目演示

主界面

设置页

工作原理

  1. 全局钩子注入:控制器进程通过 SetWindowsHookEx(WH_GETMESSAGE)HookDll.dll 注入到所有桌面进程。
  2. API 拦截HookDll 使用 MinHookGetClipboardDataOleGetClipboard 进行 inline hook。
  3. 审批协商:目标进程触发剪贴板读取时,HookDll 通过命名管道将请求发送给控制器,控制器弹出审批窗口。
  4. 决策回传:用户选择允许或拒绝后,结果通过管道回传,HookDll 据此放行或阻止此次调用。

功能特性

  • 任意进程读取剪贴板时实时弹窗审批
  • 进程图标与路径展示,便于识别来源
  • 白名单 / 黑名单管理,可手动添加或从历史中选取
  • "记住我的选择",对同一进程自动应用上次决策
  • 系统托盘常驻,支持显示/隐藏主窗口、启停注入、快速退出
  • 浅色 / 深色 / 跟随系统主题切换

依赖

  • Windows 10/11 (x64)
  • .NET 9 Desktop Runtime
  • Visual Studio 2022(含 C++ 桌面开发工具,用于构建 native DLL)

从源码构建

git clone https://github.com/LeonspaceX/Clipboard-Access-Ctrl
cd Clipboard-Access-Ctrl

# 构建 native 钩子 DLL(x64 + x86)
powershell -ExecutionPolicy Bypass -File scripts/Build-Native.ps1 -Configuration Debug

# 构建托管主程序
dotnet build src/ClipboardAccessControl.App/ClipboardAccessControl.App.csproj -c Debug

构建产物位于 src/ClipboardAccessControl.App/bin/Debug/net9.0-windows/,native DLLs 会自动复制到其下的 native/x64native/x86 子目录。

从 Release 运行

Releases 页面下载压缩包,解压后运行 ClipboardAccessControl.exe 即可。

项目结构

src/
  ClipboardAccessControl.App/             托管主程序(WPF)
    App.xaml / App.xaml.cs                应用入口与全局资源
    MainWindow.xaml                       主界面(日志与启停按钮)
    ApprovalWindow.xaml                   剪贴板审批弹窗
    SettingsWindow.xaml                   设置页(白/黑名单、主题)
    HookStopProgressWindow.xaml           停止注入时的进度窗口
    Protocol/                             IPC 协议定义
    Services/                             审批协调、管道服务、托盘、设置等
    Win32/                                P/Invoke 声明
  ClipboardAccessControl.NativeHook/      Native 钩子与宿主(C++)
    HookDll.cpp                           注入到目标进程的钩子 DLL
    HookHost.cpp                          控制器侧的注入宿主
    NativeProtocol.h                      共享协议头
scripts/
  Build-Native.ps1                        Native 构建脚本(调用 MSVC)
assets/                                   README 截图

特别感谢

  • Minhook — 本项目使用的 inline hook 库
  • WPF-UI — 本项目使用的 UI 库
  • Windhawk — 参考了此项目的 DLL Unhook 方案

LICENSE

GNU General Public License v3.0 (GPLv3)

Copyright (C) 2026 Leonxie

About

😉 模仿iOS实现的控制剪切板访问行为的程序

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors