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

WerRegisterRuntimeExceptionModule无法配合CURRENT_USER下注册的DLL工作

WER自定义DLL在HKCU注册不生效的原因与解决方案

核心原因

  • WER进程的权限与注册表访问限制:Windows错误报告服务(WER)处理崩溃时,可能运行在系统级权限或用户受限会话上下文。HKCU下的RuntimeExceptionHelperModules键虽文档标注支持,但非管理员用户写入的HKCU键可能被注册表虚拟化重定向到用户私有路径,WER进程无法访问该路径导致加载失败。此外,HKLM的配置优先级默认高于HKCU,若HKLM存在同名称模块注册,HKCU的配置会被直接忽略。
  • Windows版本兼容问题:部分旧版本Windows(如Windows 7及更早)对HKCU下的WER模块注册支持存在隐性限制,仅HKLM的配置会被WER服务识别。

无需UAC权限的解决方案

  1. 直接使用WerRegisterRuntimeExceptionModule API
    你已经调用了这个API,但可能误解了它的作用:该API是进程内注册,无需修改任何注册表。调用后,当前进程崩溃时,WER会自动加载你的自定义DLL处理异常,完全不需要全局注册表配置。这是最轻量化的方案,既不需要管理员权限,也能实现可靠的崩溃捕获(WER会在进程外加载你的DLL处理崩溃,避免进程内报告的不可靠问题)。

  2. 修复HKCU注册表写入的虚拟化问题
    若坚持使用注册表注册,需确保写入HKCU时避开注册表虚拟化:

    • 32位程序在64位系统中写入时,打开注册表键需指定KEY_WOW64_64KEY标志,避免写入到Wow6432Node虚拟化路径;
    • 确认写入的DLL路径是绝对路径,且WER进程有权限访问(优先放在应用安装目录,确保所有用户可读)。
  3. 一次性权限请求的轻量化方案
    若必须全局注册,可编写一个极小的辅助EXE(仅包含注册表写入逻辑,体积仅几KB),在应用首次启动时检查HKLM的注册状态:

    • 若未注册,提示用户一次性提升权限运行辅助EXE完成HKLM写入;
    • 后续启动应用无需再请求权限,辅助EXE仅运行一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:29