赞
踩
在win7下一直无法生成dump文件,发现需要在注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting项目新建一个LocalDumps,于是使用以下代码
- const char* sub_key = "SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\LocalDumps";
- HKEY hkey = NULL;
- LSTATUS res_ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, KEY_WRITE, &hkey);
- if (res_ret != ERROR_SUCCESS) {
- RegCreateKeyA(HKEY_LOCAL_MACHINE, sub_key, &hkey);
- }
- else
- {
- printf("ok");
- }
- RegCloseKey(hkey);
代码没有报错,但是没找到LocalDumps,全注册表搜索,发现居然在
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\Windows Error Reporting下面新建了LocalDumps,因为win7是64位系统所以无法生成dump文件需要在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting下生成LocalDumps
64位版本Windows包含的默认64位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的 注册表项。WOW64 注册表重定向器为32位程序提供了对应于32位程序注册表项的不同注册表项。在 64 位版本的注册表编辑器中,32 位注册表项显示在以下注册表项下:HKEY_LOCAL_MACHINE\Software\WOW6432Node
64位程序操作的是
32位程序操作的是:
32位程序想操作64位的注册表需要如下代码:
- DWORD dwDisposition;
- const char* sub_key = "SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\LocalDumps";
- HKEY hkey = NULL;
- LSTATUS res_ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, KEY_WRITE | KEY_WOW64_64KEY, &hkey);
- if (res_ret != ERROR_SUCCESS) {
- RegCreateKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hkey, &dwDisposition);
-
- }
- RegCloseKey(hkey);
win7 64位系统 注册表有32位和64位程序操作的不同路径,小心WOW6432Node这个坑
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。