This is a question I’m often asked when running the Windows 7 Application Compatibility briefings and labs. Both compatibility and certification are about what the application does with regards to the operating system rather than what tools or runtime the application has been developed with, that said, VB6 was developed before the security hardening that came about with Windows Vista and Windows 7 and, before much of the ‘best practice’ advice was available on how to write applications that worked with a locked down operating system. It also has to be said that many VB6 applications were developed much earlier, some going back as far as VB3, and have only ever been ported to VB6 and the current operating system of the time, rather than adopting any new standards of development or security.

Making a complex VB6 application compatible with Windows 7 isn’t difficult, although it does depend on what it does, writing to the old user profile folders, parts of the registry, Program Files and other System folders, and sending Windows messages to other applications, etc. can all cause problems. None of these are things that can’t be corrected fairly easily though and, it’s often the older C++ applications that are trickier to fix as they have sometimes done something via a ‘back door’ that’s now been very tightly shut. With many VB6 applications it’s simply a case of replacing hard-coded values with Win32 API calls.

Getting a VB6 application certified via the Windows 7 Software Logo program shouldn’t therefore be any more difficult than any other complex application that has a bit of history behind it :-) and, the Windows 7 Software Logo program doesn’t place any restrictions on what the application has been developed in or the runtime environment that it uses.