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

如何在Windows 11中用PowerShell获取已安装编解码器及媒体格式

在Windows 11中获取已安装编解码器及支持音视频格式的简便方案

问题说明

此前依赖Win32_VideoCodec、Win32_AudioCodec这类CIM类的PowerShell代码在Windows 11上会触发Get-CimInstance: Invalid query错误,原因是微软在Win11中移除了这些WMI类,编解码器信息不再通过该接口暴露,而是嵌入在ACM(音频压缩管理器)组件和相关DLL中,无法直接用简单命令提取。

替代方案

1. 用Windows Media Player快速生成支持列表

无需额外工具,系统自带功能即可导出完整信息:

  • 打开Windows Media Player,点击顶部菜单栏的帮助 → 关于Windows Media Player
  • 在弹出窗口中点击技术支持信息,系统会自动生成wmpsupport.htm并在浏览器打开,里面包含所有已安装的音视频编解码器、支持的文件格式细节。

2. 基于注册表的PowerShell脚本(无需第三方工具)

Nirsoft的InstalledCodec工具核心是读取特定注册表路径,我们可以直接用PowerShell实现类似功能:

读取音频编解码器(ACM)

# 获取音频压缩管理器注册的编解码器信息
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32" | 
Where-Object { $_.Name -match '^.*audio.*codec$' } | 
Select-Object @{Name='Codec名称'; Expression={$_.GetValue($_.PSChildName)}},
              @{Name='注册表路径'; Expression={$_.PSPath}}

读取DirectShow编解码器

# 获取DirectShow注册的音视频编解码器
$directShowPaths = @(
    "HKLM:\SOFTWARE\Classes\CLSID",
    "HKLM:\SOFTWARE\WOW6432Node\Classes\CLSID"
)

foreach ($path in $directShowPaths) {
    Get-ChildItem $path -Recurse | 
    Where-Object { 
        $_.GetValue("FilterData") -ne $null -or 
        $_.GetValue("Merit") -ne $null
    } | 
    Select-Object @{Name='编解码器CLSID'; Expression={$_.PSChildName}},
                  @{Name='编解码器名称'; Expression={$_.GetValue("")}},
                  @{Name='注册表路径'; Expression={$_.PSPath}}
}

注:DirectShow注册表项数量较多,脚本会过滤出带有编解码器特征的条目,若需更多细节,可结合Get-ItemProperty进一步提取。

3. 用dxdiag导出系统诊断报告

Windows自带的DirectX诊断工具可导出包含编解码器的完整报告:

  • 按下Win + R输入dxdiag打开工具
  • 点击保存所有信息,选择路径生成DxDiag.txt,打开后在声音和显示板块下方可找到已安装的音视频编解码器列表。

总结

如果需要自动化获取,优先选择基于注册表的PowerShell脚本;如果只是快速查看,Windows Media Player的技术支持信息或dxdiag报告是更简便的选择,无需安装第三方工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:32:34