下面给你一套PowerShell 原生方案,用来判断Audiosrv、AudioEndpointBuilder两个音频服务是否被系统更新重置。
原理:
-
获取服务注册表项的LastWriteTime(最后修改时间)
-
获取最近 Windows 更新安装时间
-
对比两个时间,如果接近,高度怀疑是更新改写了服务配置
注意:LastWriteTime≈ 更新时间 →仅作为线索佐证,不能 100% 下定论,需要结合服务启动参数一起判断。
一、以管理员打开 Windows PowerShell / 终端 (管理员)
二、脚本 1:查看音频服务注册表最后修改时间
powershell
# 获取两个音频服务注册表项=Get-Item"HKLM:SYSTEMCurrentControlSetServicesAudiosrv"=Get-Item"HKLM:SYSTEMCurrentControlSetServicesAudioEndpointBuilder"Write-Host"Windows Audio (Audiosrv) 注册表最后修改时间:".LastWriteTimeWrite-Host"Windows Audio Endpoint Builder 注册表最后修改时间:".LastWriteTime
运行输出示例:
plaintext
Windows Audio (Audiosrv) 注册表最后修改时间: 2026-07-18 15:22:10
Windows Audio Endpoint Builder 注册表最后修改时间: 2026-07-18 15:22:12
三、脚本 2:读取最近 Windows 更新安装时间
powershell
# 查询Windows更新安装事件Get-WinEvent-FilterHashtable @{LogName =SystemId = 19}-MaxEvents 10|SelectTimeCreated,Message|SortTimeCreated-Descending
事件 ID 19 = Windows Installer / 更新安装完成事件。
对比逻辑:
如果注册表修改时间 和 更新安装时间几乎同一天 → 很大概率本次更新改写了音频服务配置。
四、脚本 3:同时检查服务当前运行配置(关键!不能只看时间)
很多时候时间巧合,但服务参数本身正常;
真正判断是否被重置,要看 Start 值(启动类型)
powershell
# 读取启动类型 Start 值# Start=2 自动;3 手动;4 禁用Get-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudiosrv"|SelectStart,ObjectNameGet-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudioEndpointBuilder"|SelectStart,ObjectName
释义:
-
Start = 2→ 正常:自动
-
Start = 3→ 异常:手动(更新常见重置结果)
-
Start = 4→ 异常:禁用
五、整合一键检测脚本(推荐直接复制运行)
powershell
Write-Host"===== 音频服务注册表修改时间 ====="=Get-Item"HKLM:SYSTEMCurrentControlSetServicesAudiosrv"=Get-Item"HKLM:SYSTEMCurrentControlSetServicesAudioEndpointBuilder"Write-Host"Audiosrv LastWriteTime:$(.LastWriteTime)"Write-Host"AudioEndpointBuilder LastWriteTime:$(.LastWriteTime)`n"Write-Host"===== 音频服务启动参数 ====="Get-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudiosrv"|SelectStart,ObjectNameGet-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudioEndpointBuilder"|SelectStart,ObjectNameWrite-Host"`n===== 最近系统更新事件(最多10条) ====="Get-WinEvent-FilterHashtable @{LogName=System;Id=19}-MaxEvents 10-ErrorAction SilentlyContinue|SelectTimeCreated,Message|SortTimeCreated-Descending
六、如何综合判定【被系统更新重置】
满足下面两条,证据链最充分:
-
音频服务注册表LastWriteTime与系统更新安装时间高度重合;
-
注册表Start值变成3(手动)或 4(禁用)(正常应为 2)。
⚠️ 重要提醒
只看时间戳没用!
必须同时核对Start参数。
只改LastWriteTime时间戳,不会改变Start值,声音故障依旧存在。
七、检测发现被重置后,PowerShell 一键修复
powershell
# 设置为自动并启动Set-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudiosrv"-NameStart-Value 2Set-ItemProperty"HKLM:SYSTEMCurrentControlSetServicesAudioEndpointBuilder"-NameStart-Value 2Start-ServiceAudiosrvStart-ServiceAudioEndpointBuilderWrite-Host"音频服务已恢复为自动并启动"
|