首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使注册表设置正确,Windows也不会产生完整的崩溃转储。

即使注册表设置正确,Windows也不会产生完整的崩溃转储。
EN

Stack Overflow用户
提问于 2015-05-26 11:43:09
回答 1查看 4.8K关注 0票数 7

我的客户正经历着我编写的VB6程序的软件崩溃。

我已经设置了注册表以生成完整的崩溃转储,我看到它与其他在其系统上崩溃的程序一起正常工作,但由于某种原因,它仍然在一个完全不同的目录中创建简单的崩溃转储。

我的程序在x64计算机上运行32位。我已经为软件\Microsoft和软件\Wow6432Node\Microsoft设置了如图所示的注册表。

还是不起作用。

有人知道我怎么能确定每次程序崩溃时都会产生完整的崩溃转储吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 21:18:13

要写入的文件夹的权限

查看它拥有的文件夹C:\ProgramData\Microsoft\Windows\WER的权限

  • 读取和执行
  • 列表文件夹内容
  • 朗读

创建子文件夹LocalDumps将继承权限。

因此,您应该修改该文件夹的权限,或者使用另一个具有写权限的文件夹。

注册表密钥的权限

如果权限不允许,Windows可能无法读取注册表设置。例如,下面(非常愚蠢的)权限也会阻止LocalDump:

32位对64位

Windows错误报告由Windows执行,并且只使用带有操作系统的bitness的注册表项。你说你两个都是你安排的。如果那是真的,没关系。如果您只设置32位注册表键,它将无法工作。

AeDebug

如果您有AeDebug HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug的设置,这些设置将在WER之前执行。

请注意,此条目可能存在于32位(WOW6432Node)和64位中。

通常这会导致启动调试器,但是谁知道.它可能什么也做不了就退出。

LocalDumps被禁用

确保在Disabled中没有值为1的DWORD 1

用REG_SZ代替REG_EXPAND_SZ

我见过人们使用REG_SZ for DumpFolder%APPDATA%结合使用。只有REG_EXPAND_SZ才会展开环境变量。

有人取消了崩溃转储生成。

如果启用了WER对话框,可能会有人按下“取消”按钮。

将DWORD DontShowUI设置为1以禁用对话框。

用户设置而不是机器设置

这是机器范围的设置

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting

中的用户定义设置。

代码语言:javascript
复制
HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting

也许机器值被用户设置覆盖。

在使用之前试一试

若要测试设置是否有效,可以使用小型C++程序进行测试。

代码语言:javascript
复制
#include "stdafx.h"
#include <exception>

int _tmain(int /*argc*/, _TCHAR* /*argv*/[])
{
    throw std::exception();
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30457570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档