一个 Windows 窗口隐私保护小工具:让 OBS、腾讯会议、录屏/截屏软件等无法捕获你指定的窗口,而窗口本身在你屏幕上完全正常显示。
典型场景:直播/录屏时隐藏微信、QQ、浏览器标签页等私人窗口。
- 选择窗口:点击「选择窗口」进入拾取模式,面板实时显示光标下的窗口;按
Ctrl+Alt+B即可绑定(也可以先点击目标窗口再按热键) - 更改隐私选项:对绑定的窗口一键开启/关闭保护
- 快捷列表切换:列出桌面上所有可设置的窗口(标题 + 进程名),在列表中直接开关任意窗口的保护
- 后台运行:关闭面板只是隐藏到托盘,程序在后台持续生效;托盘左键显隐面板
- 快捷键:
热键 功能 Ctrl+Alt+B绑定光标下/前台窗口 Ctrl+Alt+D切换当前绑定窗口的保护状态 Ctrl+Alt+H显示 / 隐藏控制面板 - 一键退出:退出程序时自动还原所有被修改的窗口
保护效果来自 Windows API SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE):设置后 DWM 在合成时保证该窗口内容不会出现在任何屏幕捕获(DXGI Desktop Duplication、Windows Graphics Capture、GDI BitBlt 等)中——OBS 的显示器捕获和窗口捕获都看不到它,但它在物理屏幕上照常显示。
Windows 规定该 API 只能由窗口所属进程自己调用(跨进程调用直接返回拒绝访问,实测管理员权限也无效)。因此本工具的方案是:
- 主程序把目标窗口句柄和期望的 affinity 写入命名共享内存;
- 通过
CreateRemoteThread + LoadLibraryW将约 200KB 的辅助模块bda_helper.dll注入目标进程; - DLL 在目标进程内读取配置、调用
SetWindowDisplayAffinity、回写执行结果后自卸载; - 恢复 / 退出还原时再次注入并写入
WDA_NONE。
若目标系统为 Windows 10 2004 之前版本(不支持 WDA_EXCLUDEFROMCAPTURE),自动降级为 WDA_MONITOR(捕获中显示为黑块)。
- 杀毒软件可能误报:注入是这类工具的唯一可行实现方式(参考同类开源项目 WinHider、capture-bypass),可能触发杀软启发式拦截,请加白名单信任本程序。
- 部分进程无法注入:带反作弊的游戏、受系统保护的进程(PPL)、部分 UWP 应用会拒绝注入,程序会提示错误。
- 目标进程在保护期间被强制结束不会有副作用;本程序崩溃或被强杀时,已开启保护的窗口会保持保护状态直到窗口关闭(重新运行本程序即可找回并还原它们)。
- 需要较新的 Windows 10 / Windows 11(x64)。
- 打开 OBS,添加「显示器采集」来源;
- 运行本程序,对任意窗口(比如记事本)开启保护;
- OBS 画面中该窗口会直接消失,而你的屏幕上它还在;
- 关闭保护后窗口重新出现在 OBS 画面中。
环境要求:Rust stable (MSVC 工具链)。
cargo build --release产物在 target/release/:BetterDisplayAffinity.exe + bda_helper.dll(两者必须放在同一目录)。