• windows7 下WOW6432Node和dump文件生成问题


    1,win7生成dump文件

    在win7下一直无法生成dump文件,发现需要在注册表

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting项目新建一个LocalDumps,于是使用以下代码

    1. const char* sub_key = "SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\LocalDumps";
    2. HKEY hkey = NULL;
    3. LSTATUS res_ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, KEY_WRITE, &hkey);
    4. if (res_ret != ERROR_SUCCESS) {
    5. RegCreateKeyA(HKEY_LOCAL_MACHINE, sub_key, &hkey);
    6. }
    7. else
    8. {
    9. printf("ok");
    10. }
    11. 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

    2,WOW6432Node机制

    64位版本Windows包含的默认64位版本注册表编辑器 (Regedit.exe) 可显示 64 位和 32 位的 注册表项。WOW64 注册表重定向器为32位程序提供了对应于32位程序注册表项的不同注册表项。在 64 位版本的注册表编辑器中,32 位注册表项显示在以下注册表项下:HKEY_LOCAL_MACHINE\Software\WOW6432Node

    64位程序操作的是

     32位程序操作的是:

     32位程序想操作64位的注册表需要如下代码:

    1. DWORD dwDisposition;
    2. const char* sub_key = "SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\LocalDumps";
    3. HKEY hkey = NULL;
    4. LSTATUS res_ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, KEY_WRITE | KEY_WOW64_64KEY, &hkey);
    5. if (res_ret != ERROR_SUCCESS) {
    6. RegCreateKeyExA(HKEY_LOCAL_MACHINE, sub_key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hkey, &dwDisposition);
    7. }
    8. RegCloseKey(hkey);

    3,总结

    win7 64位系统 注册表有32位和64位程序操作的不同路径,小心WOW6432Node这个坑

  • 相关阅读:
    [Python]Open CV 基础知识学习
    go笔记之——goroutine
    指尖上的 NFT|在 G2 上评价 Ambire,有机会获得限量版收藏品
    课设之跨网段攻击
    Oracle/PLSQL: Median Function
    一键智能视频语音转文本——基于PaddlePaddle语音识别与Python轻松提取视频语音并生成文案
    肖sir__linux讲解(2.1)
    高压功率放大器是什么东西
    css常见布局
    C++_多重继承(多个父类或基类)
  • 原文地址:https://blog.csdn.net/thehunters/article/details/127750191