VC++ 安装过程/window更新过程中 Error 0x80070005 或 Error 1402 解决办法

本文介绍了一种解决Error1402注册表权限问题的方法,该问题通常发生在尝试安装软件如VC++时。解决方案涉及使用SubInACLTool调整注册表权限,包括HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER和HKEY_CLASSES_ROOT等关键区域。

问题:Error 1402. Could not open key UNKNOWN\Components\....

原因:此问题是由于注册表权限问题导致的,可以利用微软的SubInACL Tool解决。

 

解决方法:

1、下载并安装 SubInACL Tool, 默认安装在C:\Program Files (x86)\Windows Resource Kits\Tools

2、以管理员身份运行CMD或者Windows PowerShell,并切换到SubInACL Tool安装文件夹,或者将文件夹下subinacl.exe文件复制到当前路径,键入notepad reset.cmd,然后回车以创建指令文件

3、复制以下代码:

@echo off
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f
subinacl /subdirectories %windir% /grant=administrators=f /grant=system=f
@Echo -
@Echo Done.
@Echo -
@pause

 

4、键入reset.cmd,调用运行subinacl程序,耐心等待,需运行很长时间,运行结束有以下提示:5

5、重启计算机,进行VC++程序的安装。 

<think>我们正在解决Windows 11下使用QT5的QMediaPlayer播放MP4视频时出现的DirectShowPlayerService::doRender: Unresolved error code 0x80040266错误。根据引用,这个错误通常是由于缺少DirectShow解码器引起的。以下是解决方案: 1. **安装解码器包**:根据引用[2]和[4],需要安装DirectShow解码器。推荐安装K-Lite Codec Pack Standard版本(其他版本,但Standard通常足够)。安装步骤包括: - 下载:访问[K-Lite Codec Pack官网](https://www.codecguide.com/download_k-lite_codec_pack_standard.htm)下载安装包。 - 安装:运行安装程序,按照提示进行安装。在安装过程中,确保勾选所有与DirectShow相关的组件(通常默认已勾选)。在最后一步,注意勾选“Run Codec Tweak Tool”和“Open Windows Default App Settings”(如果安装程序提供这两个选项)。 - 运行Codec Tweak Tool安装完成后,运行Codec Tweak Tool,点击“Apply”“OK”来应用设置。 2. **重启电脑**:安装完成后,重启电脑(引用[2]提到需要重启)。 3. **验证安装**:重启后,尝试使用QT应用程序播放MP4视频,看是否解决问题。 4. **其他注意事项**: - 确保QT安装正确,并且项目配置无误(如引用[3]中的代码示例)。 - 如果问题仍然存在,可以尝试更新显卡驱动,因为有时硬件加速问题也可能导致播放失败。 如果以上步骤不能解决问题,可以考虑使用其他多媒体后端(如Qt的多媒体后端选项),但QT5在Windows上默认使用DirectShow,因此安装解码器是最直接的解决方案。 相关问题: 1. 如何检查系统中已安装的DirectShow解码器? 2. 除了K-Lite Codec Pack,还有哪些解码器包可以解决QT播放视频的问题? 3. 在QT中如何设置使用特定的解码器?</think>### 解决 Windows 11 下 QT5 QMediaPlayer 播放 MP4 报错 0x80040266 的方案 该错误表明系统缺少 MP4 视频所需的 DirectShow 解码器组件[^2][^4]。以下是已验证的解决步骤: #### 1. **安装解码器包(关键步骤)** - 下载 **K-Lite Codec Pack Standard**: ```url https://www.codecguide.com/download_k-lite_codec_pack_standard.htm ``` - 安装时注意: - 勾选所有与 **DirectShow** 相关的组件(默认已选) - 在最后一步 **务必勾选**: - `Run Codec Tweak Tool` - `Open Windows Default App Settings`[^4] - 安装完成后重启电脑 #### 2. **验证解码器配置** - 打开安装的 **Codec Tweak Tool** - 点击 `Apply` > `OK` 应用设置 - 在工具中检查 MP4/H.264 解码器状态(如 LAV Filters 应显示为 "Enabled") #### 3. **代码检查(QT 部分)** 确保使用正确路径和播放组件: ```cpp // 示例代码(参考引用[3]) QVideoWidget *videoWidget = new QVideoWidget(); QMediaPlayer *player = new QMediaPlayer; player->setVideoOutput(videoWidget); player->setMedia(QUrl::fromLocalFile("C:/video.mp4")); // 使用绝对路径 player->play(); ``` **注意**: - 避免使用网络路径(`QUrl("http://...")`),优先用 `QUrl::fromLocalFile()` - 路径中斜杠方向:Windows 应用 `/` `\\` #### 4. **备选方案** - 若问题依旧,尝试: 1. 更新显卡驱动(硬件加速依赖) 2. 在解码器设置中启用 **LAV Video Decoder**(Codec Tweak Tool 内) 3. 安装其他解码包如 **Shark007 Codecs** > **原理说明**: > QT 的 `QMediaPlayer` 在 Windows 依赖 DirectShow 框架,而 Windows 11 默认不包含完整 MP4 解码器[^2]。安装 K-Lite 后会在系统注册解码器组件(如 LAV Filters),使 DirectShow 能正确处理 H.264/AAC 等格式[^4]。 --- ### 相关问题 1. 如何验证 K-Lite 解码器是否成功注册到 DirectShow 系统? 2. QT6 的 `QMediaPlayer` 在 Windows 11 下是否仍依赖 DirectShow? 3. 除了安装解码器包,能否通过代码指定 QT 使用特定解码器? 4. 播放网络流媒体(如 RTSP)时出现相同错误应如何解决? > 引用来源: > [^1]: QT播放视频报错:DirectShowPlayerService::doRender: Unresolved error code 0x80040266 > [^2]: 原因:QT使用windows默认解码器,需安装directshow解码器 > [^3]: 测试代码示例 > [^4]: 解决方案:安装K-Lite Codec Pack并运行Codec Tweak Tool
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值