导言

最近写了一个超级实用的小工具——Windows解锁自动拍照系统
核心功能:每次你解锁Windows电脑时,系统会自动调用摄像头抓拍一张照片,记录下解锁者的面部,存到指定目录。
适用场景

  • 公司电脑防偷用
  • 家庭电脑防小孩偷偷玩
  • 共享电脑使用记录
  • 安全审计取证

一句话总结谁解锁了你的电脑?照片告诉你!

技术实现原理

🎯 核心技术栈

技术 作用
Python + OpenCV 摄像头拍照
Windows任务计划程序 监听解锁事件
批处理脚本 桥接调用

📋 完整工作流程

解锁Windows → 触发任务计划 → 执行批处理 → 调用Python脚本 → 摄像头拍照 → 保存带时间戳照片

完整代码实现

1. Python拍照核心脚本 camera_capture.py

#!/usr/bin/env python3
import cv2
import os
import datetime
import logging

# 配置日志(同时输出到文件和控制台)
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler(r'E:\PyProjects\AutoFace\camera_capture.log'),
        logging.StreamHandler()
    ]
)

def capture_photo(save_directory=r"E:\PyProjects\AutoFace\faces"):
    """一键拍照并保存"""
    try:
        os.makedirs(save_directory, exist_ok=True)
        logging.info(f"📸 开始拍照,保存目录: {save_directory}")
        
        # 打开摄像头
        cap = cv2.VideoCapture(0)
        if not cap.isOpened():
            logging.error("❌ 无法打开摄像头")
            return False
        
        # 预热摄像头
        import time
        time.sleep(2)
        
        # 抓拍照片
        ret, frame = cap.read()
        if ret:
            # 生成文件名:UnauthorizedAccess_20241129_143022.jpg
            timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
            filename = f"UnauthorizedAccess_{timestamp}.jpg"
            filepath = os.path.join(save_directory, filename)
            
            cv2.imwrite(filepath, frame)
            logging.info(f"✅ 照片保存成功: {filepath}")
            cap.release()
            return True
        cap.release()
        return False
    except Exception as e:
        logging.error(f"❌ 拍照失败: {str(e)}")
        return False

if __name__ == "__main__":
    import sys
    save_dir = sys.argv[1] if len(sys.argv) > 1 else r"E:\PyProjects\AutoFace\faces"
    capture_photo(save_dir)

2. 批处理启动脚本 unlock_capture.bat

@echo off
REM 🚀 Windows解锁自动拍照启动器

set SCRIPT_PATH=E:\PyProjects\AutoFace\camera_capture.py
set SAVE_DIR=E:\PyProjects\AutoFace\faces
set LOG_FILE=E:\PyProjects\AutoFace\unlock_log.txt

REM 确保目录存在
if not exist "%SAVE_DIR%" mkdir "%SAVE_DIR%"

REM 静默运行Python脚本
E:\PyProjects\AutoFace\.venv\Scripts\pythonw.exe "%SCRIPT_PATH%" "%SAVE_DIR%" >> "%LOG_FILE%" 2>&1

REM 记录解锁时间
echo 📸 解锁拍照: %date% %time% >> "%LOG_FILE%"

3. 任务计划程序配置 AutoFace.xml

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <Triggers>
    <!-- 🔥 关键:监听Session解锁事件 -->
    <SessionStateChangeTrigger>
      <Enabled>true</Enabled>
      <StateChange>SessionUnlock</StateChange>
    </SessionStateChangeTrigger>
  </Triggers>
  <Actions>
    <Exec>
      <Command>E:\PyProjects\AutoFace\unlock_capture.bat</Command>
    </Exec>
  </Actions>
  <Settings>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>  <!-- 隐秘运行 -->
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  </Settings>
</Task>

🚀 一键部署教程

步骤1:环境准备

# 创建项目目录
mkdir E:\PyProjects\AutoFace
cd E:\PyProjects\AutoFace

# 创建虚拟环境
python -m venv .venv
.venv\Scripts\activate

# 安装依赖
pip install opencv-python numpy
pip freeze > requirements.txt

步骤2:文件部署

E:\PyProjects\AutoFace\
├── camera_capture.py      # 拍照脚本
├── unlock_capture.bat     # 启动脚本
├── AutoFace.xml           # 任务计划XML
├── faces/                 # 照片保存目录
└── camera_capture.log     # 日志文件

步骤3:导入任务计划

方法一:命令行导入(推荐)

# 以管理员身份运行CMD
schtasks /create /tn "AutoFace" /xml "E:\PyProjects\AutoFace\AutoFace.xml" /f

方法二:任务计划程序GUI

  1. 打开「任务计划程序」
  2. 右键「任务计划程序库」→「导入任务」
  3. 选择 AutoFace.xml 文件

任务计划程序添加后效果

任务触发器
任务操作

步骤4:测试

  1. 锁屏Win + L
  2. 解锁:输入密码
  3. 检查E:\PyProjects\AutoFace\faces\ 目录下出现照片

📸 实际效果展示

解锁前1秒自动抓拍

照片命名规则

UnauthorizedAccess_20241129_143022.jpg

日志记录

2024-11-29 14:30:22 - INFO - 📸 开始拍照
2024-11-29 14:30:24 - INFO - ✅ 照片保存成功: E:\PyProjects\AutoFace\faces\UnauthorizedAccess_20241129_143022.jpg

⚠️ 注意事项与优化

✅ 常见问题解决

问题 解决方案
摄像头打不开 检查设备管理器→影像设备
任务不触发 确保XML中的UserId与当前用户匹配
照片模糊 增加预热时间 time.sleep(3)

🔧 高级功能扩展

  1. 人脸识别:集成 face_recognition 库自动识别谁在解锁
  2. 照片上传:解锁后自动上传到云盘
  3. 邮件通知:陌生人解锁时发送告警邮件
  4. 多摄像头:支持外接USB摄像头

🎁 完整项目下载

GitCodehttps://gitcode.com/weixin_44683jer/AutoFace
一键包:包含所有文件,直接修改路径即可使用

总结

这个工具部署5分钟,效果一生
从此电脑使用情况一目了然,再也不用担心:

  • ✅ 同事偷偷用你电脑
  • ✅ 孩子半夜玩游戏
  • ✅ 谁动了我的文件

有图有真相,谁用谁知道!

欢迎点赞收藏转发你的一个赞就是对我开发热情的最大支持! 👏

有问题留言区咨询,我看到必回!

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐