CommModifyKit-Release/
├── CommModifyKit.dll # 用户态 DLL(build\Release\Win32\)
├── CommModifyKit.sys # 内核态驱动(build\Release\x64\)
├── CommModifyKit.inf # 驱动安装描述(driver\)
├── install.ps1 # 安装脚本(installer\)
├── uninstall.ps1 # 卸载脚本(installer\)
├── docs/
│ ├── CommModifyKit-Design.md # 设计文档
│ ├── CommModifyKit-Usage.md # 使用说明
│ └── CommModifyKit-Distribution.md # 本文档
└── README.txt # 快速入门
# 在项目根目录执行
Compress-Archive -Path `
"build\Release\Win32\CommModifyKit.dll", `
"build\Release\x64\CommModifyKit.sys", `
"driver\CommModifyKit.inf", `
"installer\install.ps1", `
"installer\uninstall.ps1", `
"docs\CommModifyKit-Design.md", `
"docs\CommModifyKit-Usage.md", `
"docs\CommModifyKit-Distribution.md" `
-DestinationPath CommModifyKit-Release.zip
CommModifyKit 串口监控套件
=========================
包含文件:
CommModifyKit.dll - 用户态 DLL,供 CommModifyService 加载
CommModifyKit.sys - 内核态过滤驱动
CommModifyKit.inf - 驱动安装描述文件
install.ps1 - 自动安装脚本(需管理员权限)
uninstall.ps1 - 自动卸载脚本(需管理员权限)
快速开始:
1. 解压到任意目录
2. 右键 PowerShell → 以管理员身份运行
3. cd 到解压目录
4. 执行 .\install.ps1
5. 重启计算机(首次启用测试签名需要)
6. 将 CommModifyKit.dll 拷贝到 CommModifyService.exe 所在目录
详细文档见 docs\ 目录
内核驱动无签名则无法加载,没有例外。根据分发场景选择签名方案:
| 方案 | 成本 | 接收方操作 | 适用场景 |
|---|---|---|---|
| 测试签名 | 免费 | 启用 testsigning + 重启 | 内部开发/测试 |
| EV 代码签名 | ~$300-500/年 | 无需额外操作 | 正式交付客户 |
| WHQL 签名 | ~$250/年 + 认证 | 无需额外操作 | 大规模公开分发 |
# 1. 创建测试签名证书(一次性)
makecert -r -pe -ss PrivateCertStore -n "CN=CommModifyKitTestCert" CommModifyKitTest.cer
# 2. 对驱动签名
signtool sign /fd SHA256 /s PrivateCertStore /n CommModifyKitTestCert CommModifyKit.sys
# 3. 对 DLL 签名(可选但推荐)
signtool sign /fd SHA256 /s PrivateCertStore /n CommModifyKitTestCert CommModifyKit.dll
# 以管理员身份执行(一次性,重启后永久生效)
bcdedit /set testsigning on
Restart-Computer
重启后桌面右下角会出现"测试模式"水印,这是唯一可见的副作用。
用 signtool 签名:
# EV 签名(需要硬件令牌)
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a CommModifyKit.sys
signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /a CommModifyKit.dll
Windows 10 1607+ 可直接加载 EV 签名的内核驱动,接收方无需任何额外操作
WHQL 签名后接收方零配置,驱动可直接加载,无水印。
将 CommModifyKit-Release.zip 解压到任意目录,例如 C:\CommModifyKit\。
确认目录结构完整:
C:\CommModifyKit\
├── CommModifyKit.dll
├── CommModifyKit.sys
├── CommModifyKit.inf
├── install.ps1
├── uninstall.ps1
└── docs\
PowerShell导航到解压目录:
cd C:\CommModifyKit
.\install.ps1
预期输出:
=== CommModifyKit 安装脚本 ===
驱动 .sys: C:\CommModifyKit\CommModifyKit.sys
驱动 .inf: C:\CommModifyKit\CommModifyKit.inf
用户态 DLL: C:\CommModifyKit\CommModifyKit.dll
添加驱动包...
完成
测试签名已启用,需要重启计算机才能生效
=== 安装完成 ===
说明:驱动使用 PnP 方式安装(
pnputil /add-driver),自动注册为 Ports 类的 UpperFilters。
首次安装必须重启(启用测试签名后生效)。
Restart-Computer
# 检查驱动是否在驱动库中
pnputil /enum-drivers | Select-String "CommModifyKit"
# 检查测试签名
bcdedit /enum | Select-String "testsigning"
# 期望:testsigning Yes
# 检查驱动文件
Test-Path "$env:windir\System32\drivers\CommModifyKit.sys"
# 期望:True
# 在设备管理器中确认串口设备有 CommModifyKit 驱动
# 设备管理器 → 端口 (COM 和 LPT) → 右键串口 → 属性 → 驱动程序
# 应显示 CommModifyKit 作为过滤驱动
# 根据实际部署位置调整
$ServiceDir = "C:\Program Files\CommModifyService"
Copy-Item C:\CommModifyKit\CommModifyKit.dll $ServiceDir\
# 验证
Test-Path "$ServiceDir\CommModifyKit.dll"
确保 config.json 中启用 DLL 模式:
{
"comm": {
"use_dll": true
}
}
# 启动服务
Start-Service CommModifyService
# 或直接运行 exe(调试用)
& "$ServiceDir\CommModifyService.exe"
验证串口监控生效:
DriverClient opened \\.\CommModifyKit 和 EventLoop started# 1. 启用测试签名
bcdedit /set testsigning on
# 2. 使用 pnputil 安装驱动(PnP 方式)
cd C:\CommModifyKit
pnputil /add-driver CommModifyKit.inf /install
# 3. 扫描硬件改动(触发 PnP 重新加载过滤驱动)
# 设备管理器 → 操作 → 扫描硬件改动
# 4. 验证安装
pnputil /enum-drivers | Select-String "CommModifyKit"
# 5. 拷贝 DLL
Copy-Item C:\CommModifyKit\CommModifyKit.dll "C:\Program Files\CommModifyService\"
cd C:\CommModifyKit
.\uninstall.ps1
# 1. 找到并删除驱动包
pnputil /enum-drivers | Select-String "CommModifyKit"
# 假设显示 oem12.inf
pnputil /delete-driver oem12.inf /uninstall /force
# 2. 删除驱动文件
Remove-Item "$env:windir\System32\drivers\CommModifyKit.sys" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:windir\System32\drivers\CommModifyKit.inf" -Force -ErrorAction SilentlyContinue
# 3. 删除 DLL
Remove-Item "C:\Program Files\CommModifyService\CommModifyKit.dll" -Force
# 4. 可选:关闭测试签名
bcdedit /set testsigning off
Restart-Computer
| 事项 | 说明 |
|---|---|
| 操作系统 | 仅 Windows 10/11 x64 |
| 管理员权限 | 安装驱动必须,无法绕过 |
| 测试签名水印 | 启用后桌面右下角显示"测试模式"水印,仅影响视觉 |
| 杀毒软件 | 可能拦截内核驱动安装,需提前加白名单 |
| DLL 位数 | CommModifyKit.dll 为 Win32(x86),CommModifyService 必须是 32 位进程 |
| 驱动位数 | CommModifyKit.sys 为 x64,仅支持 64 位 Windows |
| 测试签名安全性 | 启用后任何测试签名驱动都可加载,降低系统安全性 |
| Windows 更新 | 大版本更新可能重置 testsigning 设置,需重新启用 |
可以。选择测试签名(免费)或 EV 代码签名(付费但无需接收方操作)即可。
只有两种方式:购买 EV 证书签名,或获取 WHQL 签名。测试签名的水印无法单独关闭。
首次启用 testsigning 必须重启,之后安装更新版本无需重启。如果使用 EV 或 WHQL 签名,则完全不需要重启(首次安装驱动除外)。
sysprep 封装系统镜像(含 testsigning 和驱动服务)