Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Registry configuration hide bugs

Ben
2011-07-21
2013-05-28
  • Ben
    Ben
    2011-07-21

    Hi, David,

    Registry configuration is very convenient, but it will cause many problems.
    I believe that when you debug this library, the previous settings remain in your registry,
    which will leads the programs running in a different path you may not cover.
    So, it is not easy to find the hidden bugs.

    Why not use "ini" or "xml" to save the configuration ?
    This will keep the program "green".
    And it is very easy to test the program when there is or there isn't previous settings.

    The following samples will result in an exception or failed to start if I delete previous settings in the registry:

    Browser -> GeWindowRect: m_hWnd is NULL
    Dock      
    DockContainer
    DockTabbedMDI
    Explorer ->GeWindowRect: m_hWnd is NULL
    FastGDI  -> MainFrame CreateEx failed
    FormDemo-> MainFrame CreateEx failed, most params of m_pcs are 0 or NULL
    Frame -> MainFrame CreateEx failed, most params of m_pcs are 0 or NULL, especially hInstance is NULL
    GDIPlus ->MainFrame CreateEx failed
    MDIFrame -> HWND CWnd::Create(CWnd* pParent /* = NULL */) Faield, m_hWnd is NULL
    MDIFrameDemo -> HWND CWnd::Create(CWnd* pParent /* = NULL */) Faield, m_hWnd is NULL
    MDIFrameSplitter ->HWND CWnd::Create(CWnd* pParent /* = NULL */) Faield, m_hWnd is NULL
    Splitter ->Win32xx::CWnd::GetClientRect(), m_hWnd is NULL

    Test platform:
    Windows Xp Professional sp3
    VC6 Sp6

    Maybe not all crashes of these programs are not because of registry.

     
  • David
    David
    2011-07-22

    Hi,

    It is Microsoft that recommends that the registry should be used in preference to "ini" files. Applications looking to be certified for Windows are required not to use "ini" files. Also, the use of "ini" files is rather likely to cause problems on the more modern operating systems like Vista and Windows 7.  These operating systems will require administration privileges if an application writes to any file outside the user's home directory (or a subdirectory thereof).

    I installed Visual Studio 6 and SP6 on a virtual machine running Windows XP Professional with SP3.  After removing the Win32++ registry entries I compiled each of the samples you mentioned. The Splitter sample required an adjustment to find the Win32++ header files, and GDIPlus failed because I didn't bother to install the PlatformSDK, but none of them showed any indication the problem you mentioned.

    I wonder at this stage if you might be mistaken with the problems attributed to the use of the registry. Perhaps the problem lies elsewhere?

    Anyway please get back to me with any information that might clarify the situation.

    Best regards,
    David