none
MSXML6.dll in Windows8 breaks legacy apps.

    Question

  • Our application written in VB6 uses DOMDocument40 which is an object exposed in MSXML6.dll in older versions of Windows.

    The MSXML6.dll with Windows8 is different and does not expose DOMDocument40, causing our application to break on customers who upgrade to Windows8.

    Is there any solution except we change our app to use DOMDocument60 and supply an update to all our customers? 

    Tuesday, May 21, 2013 11:28 AM

Answers

  • So based on that with releases of MSXML 6 on platforms before Windows 8 the MSXML 6 software exposed objects respectively interfaces belong to older MSXML versions and this has changed in Windows 8. Pretty odd, I was not aware that MSXML 6 did that on earlier releases, I always thought that those suffixes like 60 or 40 related to a particular version of MSXML, with the exception of DOMDocument without suffix being provided by MSXML 2.6 or 3.0, depending on installation and registration.

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms764622%28v=vs.85%29.aspx does not document the older names/program ids as being exposed.

    I don't know what to suggest, if you rely on msxml6.dll anyway then using the MSXML 6 specific objects/interfaces seems like the best option, keeping in mind the different, more restrictive security settings that MSXML 6 has enabled compared to MSXML 4.

    That just my 2c, someone might want to try to file the problem on connect.microsoft.com to get an official reaction and assessment. But things there work slowly.


    MVP (XML, Data Platform Development) 2005/04 - 2013/03 My blog

    • Marked as answer by ChrisABC6 Tuesday, May 21, 2013 9:04 PM
    Tuesday, May 21, 2013 5:43 PM

All replies

  • There are different versions of MSXML, msxml6.dll is the DLL of MSXML version 6 and the objects exposed are e.g DOMDocument60 or  MSXML2.XMLHTTP60 for that version of MSXML.

    DOMDocument40 is part of MSXML version 4. I don't think DOMDocument40 was ever provided by MSXML 6.

    As far as I know the MSXML versions 3 and 6 are by now part of any supported Microsoft OS/service pack so starting with Windows XP SP 3 any application should be able to use MSXML 3 as well as MSXML 6 without needing to install (these versions of) MSXML.

    MSXML 4 is not part of the OS as far as I know and always needed to be installed.

    On what OS do you have MSXML 6 exposing DOMDocument40? Are you sure it is not exposed by some installation of MSXML 4?


    MVP (XML, Data Platform Development) 2005/04 - 2013/03 My blog

    Tuesday, May 21, 2013 11:44 AM
  • Thanks for quick reply.

    On an XPpro machine, I have file \system32\MSXML6.dll   size 1306624, date 14APR2008
       Using Object Browser in VB6 shows:
              Library: MSXML2, from file \system32\MSXML6.dll
                  with Classes:  DOMDocument
                                         DOMDocument26
                                         DOMDocument30
                                         DOMDocument40
                                         DOMDocument60

    On Windows8 machine, I have file \system32\MSXML6.dll   size 1802752, date 26JUL2012
         Using Object Browser shows:
             Library: MSXML2, from file \system32\MSXML6.dll
                  with Classes:  DOMDocument60

    I can point to other posts from developers asking the same question (with different types of apps affected), and no answers yet.

     

    Tuesday, May 21, 2013 1:58 PM
  • Does the Windows XP Pro system have msxml4.dll, msxml3.dll and msxml2.dll?

    I am not familiar with VB6, I have only used the different MSXML versions with JScript or VBScript and I am sure I couldn't use

      new ActiveXObject("Msxml2.DOMDocument.4.0")

    unless I installed MSXML 4.

    Maybe someone else with classic VB knowledge can tell you more.


    MVP (XML, Data Platform Development) 2005/04 - 2013/03 My blog

    Tuesday, May 21, 2013 2:53 PM
  • Windows XPpro system did have msxml2.dll, msxml3.dll, msxml4.dll but I renamed them so they would not be used.

    Here's a link to other people reporting same problem:
    http://social.technet.microsoft.com/Forums/en-US/W8ITProPreRel/thread/f9180e5c-7c2f-44be-8415-d0d2b76e3f7f

    As they say, it isn't something specific to just one product.

    Tuesday, May 21, 2013 3:48 PM
  • So based on that with releases of MSXML 6 on platforms before Windows 8 the MSXML 6 software exposed objects respectively interfaces belong to older MSXML versions and this has changed in Windows 8. Pretty odd, I was not aware that MSXML 6 did that on earlier releases, I always thought that those suffixes like 60 or 40 related to a particular version of MSXML, with the exception of DOMDocument without suffix being provided by MSXML 2.6 or 3.0, depending on installation and registration.

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms764622%28v=vs.85%29.aspx does not document the older names/program ids as being exposed.

    I don't know what to suggest, if you rely on msxml6.dll anyway then using the MSXML 6 specific objects/interfaces seems like the best option, keeping in mind the different, more restrictive security settings that MSXML 6 has enabled compared to MSXML 4.

    That just my 2c, someone might want to try to file the problem on connect.microsoft.com to get an official reaction and assessment. But things there work slowly.


    MVP (XML, Data Platform Development) 2005/04 - 2013/03 My blog

    • Marked as answer by ChrisABC6 Tuesday, May 21, 2013 9:04 PM
    Tuesday, May 21, 2013 5:43 PM
  • Same problem here. Windows10. MSXML6.dll does not expose older versions of DOMDocument.

    But Windows7 does it.

    Wednesday, January 25, 2017 8:01 AM