none
is HKLM\Software\Wow6432Node\Wow6432Node\Wow6432Node not a visual c++ bug? RRS feed

  • Question


  • why not HKLM\Software\Wow6432Node\Wow6432Node\Wow6432Node is a bug in vc++?

    am using vista 64bit version,

    to clean registry using some cleaners softwares, every software on this key went to infinite loop,

    actual structure in my registry is
    HKLM
    |
     -->Software
         |
         |
         -->Wow6432Node
             |
             |
              -->Wow6432Node

    that means HKLM\Software\Wow6432Node\Wow6432Node( only two levels of Wow6432Node)
    but softwares are showing HKLM\Software\Wow6432Node\Wow6432Node\Wow6432Node then continuing with Wow6432Node to infinite

    then i worte a small code like

    if (RegOpenKeyEx(HKLM, _T("Software\\Wow6432Node\\Wow6432Node\\Wow6432Node"),strKeyName,0,KEY_READ,&hKey) == ERROR_SUCCESS)
       AfxMessageBox(_T("Key exists"));
    else
      AfxMessageBox(_T("Key does n\'t exists"));

    in visual studio 2005,
    then complie & ran, its gave the message "Key exists". i was shocked at that movement

    after few seconds
    tried REG QUERY HKLM\Software /s from command prompt, it gave the current results, that means it didnt go into infinite loop


    So i realize its Visual studio bug

    am i right or what?

    what u say guys?





    Wednesday, January 7, 2009 12:46 PM

Answers

  • This is a side-effect of the registry virtualization in 64-bit Vista, the Wow6432Node is a link to the registry keys visible to a 32-bit program.  Your registry cleaners clearly don't handle this virtualization correctly, which makes them a very dangerous tool to use.

    Please use this forum only to ask questions about the C++ Language.


    Hans Passant.
    Wednesday, January 7, 2009 1:26 PM
    Moderator

All replies

  • This is a side-effect of the registry virtualization in 64-bit Vista, the Wow6432Node is a link to the registry keys visible to a 32-bit program.  Your registry cleaners clearly don't handle this virtualization correctly, which makes them a very dangerous tool to use.

    Please use this forum only to ask questions about the C++ Language.


    Hans Passant.
    Wednesday, January 7, 2009 1:26 PM
    Moderator
  • thanks for reply,

    what my question is
    if (RegOpenKeyEx(HKLM, _T("Software\\Wow6432Node\\Wow6432Node\\Wow6432Node"),strKeyName,0,KEY_READ,&hKey) == ERROR_SUCCESS)

    why this condition becomes true, even that key does not exists,

    how can we handled registry virtualization correctly at this location?


    Thursday, January 8, 2009 4:53 AM
  • second \Wow6432Node Key is a bug, usally from a bad upgrade install or bad system seal. You can delete that entire key...free tons of space from your registry, with no problem. if you can write you code not to try to keep scanning the key and just autodelete the key  HKLM\Software\Wow6432Node\Wow6432Node\ you should be safe! I Did it myself when i couldn't install vista upgrade, but after i deleted it, no problem worked fine!
    • Proposed as answer by d2600 Thursday, January 22, 2009 11:43 PM
    • Unproposed as answer by nobugzModerator Friday, January 23, 2009 1:03 AM
    Thursday, January 22, 2009 11:42 PM
  • Do not delete that key.
    Hans Passant.
    Friday, January 23, 2009 1:03 AM
    Moderator
  • I got this problem, just after applying SP1 on a fresh native VISTA Ultimate 64.

    Nothing to do with C++

    After investigation it appears that MicroSoft Online Freeware "Onecare Registry Cleaner" and Print function in Regedit.exe will loop for 3 to 4 hours before going trhu.

    With Regedit.exe I print the HKLM\wow6432\Software\Microsoft  section an it generate 347289 pages in PDF !!!!!! before I cancelled it. Yes 347289 pages WOW !!

    With MS Onecare Registry Cleaner it gives 14040 errors on HKLM\wow6432\Software, when I ask to clean, Onecare bypass them.

    I did the RegEdit-Print in several sections of HKLM\wow6432\Software and it appears that the HKLM\wow6432\Software\Microsoft cause that problem.

    I did a Registry Defrag with  "Quicksys RegDefrag" no results.

    I have tried in previous installation MS Update KB947821 without result.

    I suspect the problem occurs when installing multiple MS update simultaneously.

    As example: I have installed VISTA 4 times trying to get rid of this problem.

    First I install VISTA from CD, then applied all 80 updates that are important. --> wow6432 get corrupted (just in applying MS Updates)

    Then I restart install VISTA and selectively applying no more then 10 updates a shot, in creation date order.  No problem with Wow6432.

    Then I applied SP1 --> get problem with  Wow6432  SP1 contains hundred of updates.

    I have tried one commercial registry cleaner and it pass thru HKLM\Wow6432  but I didn't ask for a clean.
    Will it create more future problems ??

    Registry not so WOW

    Saturday, May 16, 2009 1:28 AM