Initial commit - 按新规范整理目录结构

- Code/: 源代码、配置文件、文档、工具
- Releases/: 发布包(v1.0)
- Test/: 测试用例和测试脚本
This commit is contained in:
2026-03-20 06:54:40 +08:00
commit 45e7d9553a
29 changed files with 5068 additions and 0 deletions

View File

@@ -0,0 +1,254 @@
# 远程音量控制 - 部署检查清单
## 📦 部署前准备
### 1. 环境检查
- [ ] 目标电脑已安装 Windows 10/11
- [ ] 已安装 Python 3.8 或更高版本
- [ ] 确认 Python 已添加到系统 PATH
- [ ] 确认有管理员权限(用于安装服务)
- [ ] 确认 Windows Audio 服务正在运行
### 2. 文件准备
- [ ] remote_volume_monitor.py主程序
- [ ] config.ini配置文件
- [ ] 启动监控.bat启动脚本
- [ ] requirements.txt依赖列表
- [ ] README_远程音量控制.md使用文档
- [ ] 测试用例_远程音量控制.md测试文档
- [ ] 部署检查清单.md本文档
### 3. 依赖安装
```bash
# 方法 1: 使用 requirements.txt
pip install -r requirements.txt
# 方法 2: 手动安装
pip install pycaw comtypes wmi pywin32
```
- [ ] pycaw 安装成功
- [ ] comtypes 安装成功
- [ ] wmi 安装成功
- [ ] pywin32 安装成功
---
## 🚀 部署步骤
### 步骤 1: 文件部署
将以下文件复制到目标电脑(建议路径:`C:\Program Files\RemoteVolumeMonitor\`
- [ ] 复制所有项目文件到目标目录
- [ ] 确认文件权限正确
- [ ] 创建日志目录(可选)
### 步骤 2: 配置调整
编辑 `config.ini`
```ini
[volume]
remote_volume = 30 # 根据实际需求调整
local_volume = 80 # 可选,断开时恢复
[monitor]
check_interval = 5 # 检测间隔(秒)
[behavior]
adjust_on_connect = true
adjust_on_disconnect = true
```
- [ ] 设置目标音量
- [ ] 设置检测间隔
- [ ] 配置行为选项
### 步骤 3: 功能测试
运行测试模式:
```bash
python remote_volume_monitor.py --test
```
- [ ] 程序无报错
- [ ] 能正确检测当前会话状态
- [ ] 音量控制器初始化成功
### 步骤 4: 手动启动测试
```bash
python remote_volume_monitor.py --config config.ini
```
- [ ] 程序正常启动
- [ ] 日志文件开始记录
- [ ] 无异常错误
### 步骤 5: RDP 连接测试
1. 使用另一台电脑 RDP 连接到目标电脑
2. 观察音量变化
3. 查看日志记录
4. 断开 RDP 连接
5. 观察音量恢复(如果配置了)
- [ ] 连接时音量自动降低
- [ ] 断开时音量自动恢复
- [ ] 日志记录完整
- [ ] 响应时间 < 5 秒
### 步骤 6: 安装为服务(可选,推荐)
**下载 NSSM**: https://nssm.cc/download
**以管理员身份运行 CMD**:
```bash
cd C:\Program Files\RemoteVolumeMonitor
nssm install RemoteVolumeMonitor "C:\Python39\python.exe" "C:\Program Files\RemoteVolumeMonitor\remote_volume_monitor.py" "--config" "C:\Program Files\RemoteVolumeMonitor\config.ini"
nssm set RemoteVolumeMonitor DisplayName "Remote Volume Monitor"
nssm set RemoteVolumeMonitor Description "自动检测远程连接并调整系统音量"
nssm set RemoteVolumeMonitor Start SERVICE_AUTO_START
nssm set RemoteVolumeMonitor ObjectName LocalSystem
nssm start RemoteVolumeMonitor
```
- [ ] NSSM 已下载
- [ ] 服务安装成功
- [ ] 服务启动成功
- [ ] 设置开机自启
- [ ] 重启电脑验证服务自动启动
---
## ✅ 验收检查
### 功能验收
- [ ] 能准确检测 RDP 连接建立
- [ ] 能准确检测 RDP 连接断开
- [ ] 连接时音量自动调整到设定值
- [ ] 断开时音量自动恢复(如果配置)
- [ ] 配置修改后生效
- [ ] 日志记录完整准确
### 性能验收
- [ ] CPU 占用 < 1%
- [ ] 内存占用 < 50MB
- [ ] 检测延迟 < 5 秒
- [ ] 能稳定运行 24 小时
- [ ] 无内存泄漏
### 稳定性验收
- [ ] 多次连接/断开无异常
- [ ] 网络波动不影响程序
- [ ] 系统重启后自动恢复(服务模式)
- [ ] 无崩溃现象
---
## 📝 部署记录
| 项目 | 内容 |
|------|------|
| 部署日期 | _______________ |
| 部署人员 | _______________ |
| 目标电脑 | _______________ |
| 电脑名称 | _______________ |
| IP 地址 | _______________ |
| 部署方式 | ⬜ 手动启动 ⬜ Windows 服务 |
| 配置音量 | 远程____% 本地____% |
| 检测间隔 | ____ 秒 |
---
## 🐛 问题记录
### 问题 1
**描述**: _______________
**解决方案**: _______________
**状态**: ⬜ 已解决 ⬜ 待解决
### 问题 2
**描述**: _______________
**解决方案**: _______________
**状态**: ⬜ 已解决 ⬜ 待解决
---
## ✅ 部署完成确认
- [ ] 所有部署步骤已完成
- [ ] 功能测试全部通过
- [ ] 性能指标达标
- [ ] 用户已培训
- [ ] 文档已交付
- [ ] 问题已记录
**部署负责人**: _______________
**验收人**: _______________
**日期**: _______________
---
## 📞 运维支持
### 常见问题
**Q1: 程序无法启动**
- 检查 Python 是否安装
- 检查依赖是否完整
- 查看日志文件错误信息
**Q2: 音量无法调节**
- 检查音频设备是否正常
- 以管理员身份运行
- 检查 Windows Audio 服务
**Q3: 无法检测远程连接**
- 检查 WMI 服务是否运行
- 检查防火墙设置
- 查看日志诊断信息
**Q4: 服务无法启动**
- 确认以管理员权限安装
- 检查 NSSM 配置
- 查看 Windows 事件查看器
### 日志位置
默认日志文件:`remote_volume.log`(程序运行目录)
### 服务管理
```bash
# 查看服务状态
nssm status RemoteVolumeMonitor
# 停止服务
nssm stop RemoteVolumeMonitor
# 启动服务
nssm start RemoteVolumeMonitor
# 删除服务
nssm remove RemoteVolumeMonitor
```
---
**部署完成后,请将此文档上传到飞书任务管理表!**

View File

@@ -0,0 +1,222 @@
# 音量控制方案说明
## ⚠️ 关于错误码 -2147221164 (0x80040154)
如果你看到以下错误:
```
✗ 创建设备枚举器失败,错误码:-2147221164 (0x80040154)
```
这表示 **Core Audio API 初始化失败**。原因可能是:
- Windows N 版本(欧洲版,缺少媒体功能包)
- 系统音频服务异常
- COM 组件注册问题
- 权限问题
---
## ✅ 解决方案
程序已自动降级到备用方案,**仍可正常工作**
### 方案对比
| 方案 | 精度 | 可靠性 | 依赖 | 推荐度 |
|------|------|--------|------|--------|
| **nircmd** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 需下载 35KB 工具 | ⭐⭐⭐⭐⭐ 强烈推荐 |
| Core Audio API | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 无 | ⭐⭐⭐ |
| PowerShell | ⭐⭐⭐ | ⭐⭐⭐⭐ | 无 | ⭐⭐⭐ |
| SendMessage | ⭐⭐ | ⭐⭐⭐⭐ | 无 | ⭐⭐ |
---
## 🎯 推荐方案:安装 nircmd最佳体验
### 步骤 1下载 nircmd
访问https://www.nirsoft.net/utils/nircmd.html
或直接下载:
- 32 位https://www.nirsoft.net/utils/nircmd.zip
- 64 位https://www.nirsoft.net/utils/nircmd-x64.zip
### 步骤 2安装
**方法 A放到系统 PATH推荐**
```
1. 解压 nircmd.zip
2. 复制 nircmd.exe 到 C:\Windows\
3. 完成!
```
**方法 B放到程序目录**
```
1. 解压 nircmd.zip
2. 复制 nircmd.exe 到 remote-volume-monitor\ 目录
3. 完成!
```
### 步骤 3验证
```bash
nircmd setsysvolume 32767
```
如果音量变为 50%,说明安装成功!
---
## 🔧 各方案详细说明
### 方案 1nircmd推荐
**优点:**
- ✅ 最可靠100% 成功
- ✅ 精确控制音量0-100%
- ✅ 支持获取当前音量
- ✅ 仅 35KB无需安装
- ✅ 免费软件
**缺点:**
- ⚠️ 需要手动下载(一次下载,永久使用)
**使用命令:**
```bash
# 设置音量为 50%
nircmd setsysvolume 32767
# 设置音量为 30%
nircmd setsysvolume 19660
# 获取音量(返回值 0-65535
nircmd cmdoutputget sysvolume
```
---
### 方案 2Core Audio APIctypes
**优点:**
- ✅ 无需额外工具
- ✅ 精确控制音量
**缺点:**
- ❌ 可能失败(如你遇到的错误)
- ❌ 代码复杂,维护成本高
**适用场景:**
- 标准 Windows 10/11 专业版/家庭版
- 非 N 版本系统
---
### 方案 3PowerShell
**优点:**
- ✅ Windows 自带
- ✅ 无需额外工具
**缺点:**
- ⚠️ 精度有限
- ⚠️ 无法精确获取音量
**使用示例:**
```powershell
# 模拟音量键(不精确)
Add-Type -AssemblyName System.Windows.Forms
```
---
### 方案 4SendMessage
**优点:**
- ✅ 100% 可用
- ✅ 无需任何依赖
**缺点:**
- ❌ 只能模拟按键,无法设置精确音量
- ❌ 无法获取当前音量
---
## 📋 程序自动选择逻辑
```
1. 检查 nircmd.exe 是否在 PATH 或程序目录
└─ 是 → 使用 nircmd最佳
└─ 否 → 继续
2. 尝试初始化 Core Audio API
└─ 成功 → 使用 Core Audio
└─ 失败 → 继续
3. 检查 PowerShell 是否可用
└─ 是 → 使用 PowerShell
└─ 否 → 继续
4. 使用 SendMessage 模拟按键(最后备用)
```
---
## 🧪 测试你的配置
```bash
cd remote-volume-monitor
# 测试模式
python src\remote_volume_monitor.py --test
# 预期输出:
# ✓ 音量控制器nircmd (或 PowerShell/SendMessage)
# ✓ RDP 监控器初始化成功
# 音量控制器:✓ 就绪
```
---
## 💡 常见问题
### Q1: 我不想下载 nircmd能用吗
**A:** 可以!程序会自动使用 PowerShell 或 SendMessage 方案,但精度会受限。
### Q2: 为什么 Core Audio 会失败?
**A:** 可能原因:
- Windows N 版本(需要安装媒体功能包)
- Windows Audio 服务未运行
- 系统权限问题
### Q3: 如何检查我的 Windows 版本?
**A:**
```bash
# 查看 Windows 版本
winver
# 查看是否为 N 版本
systeminfo | findstr /B /C:"OS Name"
```
如果显示 "Windows 10/11 Pro N" 或 "Home N",就是 N 版本。
### Q4: N 版本如何修复?
**A:** 安装媒体功能包:
https://support.microsoft.com/zh-cn/topic/媒体功能包-for-windows-10-version-2004-85c94d1c-6077-4f41-8093-55c92a318272
或者直接下载 nircmd更简单
---
## 📞 总结
| 你的情况 | 建议 |
|---------|------|
| 看到 0x80040154 错误 | 下载 nircmd5 分钟搞定) |
| 不想下载额外工具 | 使用 PowerShell 方案(精度有限) |
| 需要精确控制 | 必须用 nircmd 或修复 Core Audio |
| 企业环境无法下载 | 联系 IT 安装媒体功能包 |
---
**推荐操作:** 下载 nircmd放到 `C:\Windows\` 目录,问题解决!
下载地址https://www.nirsoft.net/utils/nircmd.html