Files
remote-volume-monitor/docs/README_远程音量控制.md
Agent e4a53c6064 重构:将 Code 文件夹内容移至仓库根目录
- 移除 Code 文件夹层级
- 源代码、文档、配置直接放在根目录
- 更新 .gitignore 排除 Releases/Test
2026-03-20 07:08:05 +08:00

5.1 KiB
Raw Permalink Blame History

远程连接音量自动调节器

自动检测 Windows 远程桌面 (RDP) 连接,并在连接建立时自动调整系统音量。

🎯 功能特性

  • 自动检测 RDP 远程连接建立/断开
  • 连接时自动降低音量(保护隐私/避免噪音)
  • 断开时自动恢复音量(可选)
  • 后台持续监控(守护进程模式)
  • 可配置音量百分比和检测间隔
  • 支持安装为 Windows 服务(开机自启)
  • 详细日志记录

📦 安装步骤

1. 准备环境

确保目标 Windows 电脑已安装:

  • Python 3.8 或更高版本
  • pip 包管理器

2. 安装依赖

pip install pycaw comtypes wmi

或一键安装:

pip install -r requirements.txt

3. 配置文件

编辑 config.ini

[volume]
remote_volume = 30      # 远程连接时音量 (0-100)
local_volume = 80       # 本地使用音量 (可选)

[monitor]
check_interval = 5      # 检测间隔 (秒)

[behavior]
adjust_on_connect = true
adjust_on_disconnect = true

4. 启动方式

方式 A手动启动测试用

双击运行 启动监控.bat

或在命令行:

python remote_volume_monitor.py --config config.ini

方式 B安装为 Windows 服务(推荐)

  1. 下载 NSSMhttps://nssm.cc/download
  2. 解压到程序目录
  3. 管理员身份运行:
nssm install RemoteVolumeMonitor
  1. 在弹出的界面中配置:

    • Path: C:\Python39\python.exe (你的 Python 路径)
    • Args: C:\path\to\remote_volume_monitor.py --config C:\path\to\config.ini
    • Startup directory: C:\path\to\
  2. 点击 "Install service"

  3. 启动服务:

nssm start RemoteVolumeMonitor

方式 C使用提供的安装脚本

# 以管理员身份运行 CMD
python remote_volume_monitor.py --install-service

# 然后运行生成的 install_service.bat (管理员权限)

🔧 命令行参数

# 设置远程音量为 30%
python remote_volume_monitor.py --volume 30

# 使用配置文件
python remote_volume_monitor.py --config config.ini

# 创建示例配置文件
python remote_volume_monitor.py --create-config

# 测试模式(检测一次后退出)
python remote_volume_monitor.py --test

# 获取当前音量
python remote_volume_monitor.py --get-volume

# 立即设置音量
python remote_volume_monitor.py --set-volume 50

# 安装为 Windows 服务
python remote_volume_monitor.py --install-service

📊 日志查看

程序运行时会生成 remote_volume.log 文件,记录所有事件:

2026-03-07 17:30:00,123 - INFO - ✓ 音量控制器初始化成功
2026-03-07 17:30:00,456 - INFO - ✓ WMI 监控器初始化成功
2026-03-07 17:30:00,789 - INFO - 🚀 远程音量监控器已启动
2026-03-07 17:35:22,012 - INFO - 🔔 检测到远程连接建立
2026-03-07 17:35:22,345 - INFO - ✓ 音量已设置为 30%
2026-03-07 17:40:15,678 - INFO - 🔔 检测到远程连接断开
2026-03-07 17:40:15,901 - INFO - ✓ 音量已设置为 80%

🔍 工作原理

  1. 会话检测:通过 WMI 查询 Win32_Session 类,检测 SessionType = "Remote" 的活跃会话
  2. 备用检测:如果 WMI 不可用,使用环境变量 SESSIONNAMEquery user 命令
  3. 状态监控:每 5 秒(可配置)检测一次会话状态变化
  4. 音量控制:使用 pycaw 库调用 Windows Core Audio API 调整主音量

⚠️ 注意事项

权限要求

  • 需要普通用户权限即可运行
  • 安装为服务时需要管理员权限

兼容性

  • Windows 10/11
  • Windows Server 2016/2019/2022
  • 需要启用 WMI 服务

远程桌面类型

支持检测:

  • Windows 远程桌面 (RDP)
  • 快速助手 (Quick Assist)
  • ⚠️ TeamViewer/AnyDesk 等第三方工具(可能无法检测,因为它们不使用 RDP 协议)

多用户场景

如果多人同时登录,程序会在任一远程会话活跃时调整音量。

🛠️ 故障排查

问题 1依赖安装失败

# 尝试使用国内镜像
pip install pycaw comtypes wmi -i https://pypi.tuna.tsinghua.edu.cn/simple

问题 2WMI 不可用

# 检查 WMI 服务状态
sc query winmgmt

# 如果未运行,启动服务
net start winmgmt

问题 3音量无法调整

  • 检查音频设备是否正常
  • 确保程序有音频控制权限
  • 尝试以管理员身份运行

问题 4无法检测远程连接

  • 检查防火墙是否阻止 WMI
  • 确认远程桌面服务正在运行
  • 查看日志文件获取详细错误信息

📝 自定义开发

如需支持其他远程工具TeamViewer、向日葵等可以修改 RDPMonitor.is_remote_session() 方法,添加对应的检测逻辑:

def is_remote_session(self):
    # 检测 TeamViewer
    for proc in self.c.Win32_Process():
        if 'teamviewer' in proc.Name.lower():
            return True
    
    # 检测向日葵
    for proc in self.c.Win32_Process():
        if 'sunlogin' in proc.Name.lower():
            return True
    
    # ... 其他检测方法

📄 许可证

MIT License - 自由使用和修改

🤝 贡献

欢迎提交 Issue 和 Pull Request