Vista To Support Legacy VB6 Apps

A number ISVs I’ve been talking to as participants in the Windows Vista early-adoption programs have asked questions on the support of legacy Visual Basic 6 applications on Windows Vista.

In this DevSource article “Microsoft’s Upcoming Vista To Support Legacy VB6 AppsJay Roxe doens’t fully answer the question “Will Microsoft’s forthcoming Vista OS support legacy applications written in VB6 (Visual Basic 6)?”, but he says that Microsoft will extend mainstream support for the VB6 runtime at the time Vista will be shipping. Other take-aways from the article:

  • the VB6 runtime will ship with Vista

  • in general VB6 applications will work on Windows Vista and they will get AppCompat testing

  • the VB6 IDE will not take advantage of new Vista features or behavior but it will run on Windows Vista

  • Will the VB6 runtime be shipped with Windows XP and Server 2003 until the end of life of these products

Microsoft is currently readying a white paper about VB6 support in the next edition of Windows. More in-detail answers to the support question will be available in about a month from now.

Below a list of some very useful resources on Visual Basic 6 and Visual Basic 2005:


Comments (41)

  1. Wes Miller says:

    So is that a change from XP, then? VB 6 wasn’t supported on Windows XP on either of the 64-bit platforms (IA64 when XP first shipped, and X64/AMD64 when Server SP1 shipped and XP X64 shipped with it).

    Or does this just mean Vista X86 will continue support, but X64 (where Microsoft is hoping Vista will be successful with new hardware) won’t?

  2. MSDN Archive says:

    Wes, Microsoft will extend mainstream support for the VB6 runtime — already being supplied through the end of the Windows XP lifecycle — by another six or seven years, through the end of the Vista lifecycle. So no change here for XP.

    For the Vista support plans (32-bit/64-bit) we will have to wait on the white paper which should be available in a couple of weeks.

  3. Stephane Rodriguez says:

    Will Vista run unsigned VB6 components? If the answer is yes, will the components run without scary user warnings?

    I have heard things like "signed components only in Vista" lately in relation to native code (not just VB6). Does any of this make sense?

  4. MSDN Archive says:

    As VB6 applications – with signed or unsigned components – run on XP, they will work on Windows Vista. Most applications will also get application compatibility testing to make sure they run fine.

  5. It looks like Vista is going to support VB6 applications only partially.

    Just to give you an example, in Windows Vista, they have done away with one of the most common statements used in VB6: SendKeys. All VB6 applications containing that cursed statement will just crash under MS new OS.

    In theory, the solution to the problem exists (you have to replace SendKeys with an API function) but what is certainly difficult to do is provide all of your customers with an updated version of the software they bought from you.

    If I think of all the VB6 applications I have sold over the last few years which make large use of the SendKeys statement… I can’t believe they now have their days numbered.

    What is even more crazy is that SendKeys seems not to work even under .NET 2.0. I really hate it when Microsoft is not compatible with Microsoft!

    What’s the point in neutralizing the SendKeys statement when it is equally possible to get the same results resorting to WinAPI32?

    Let’s hope this bug will be fixed when the final version of Windows Vista is released, even though I doubt it.

    I only used SendKeys to move the focus from a TextBox to the next one or to simulate the pressure of the F1 key in order to launch the help file. I’m afraid millions of VB6 programmers did the same.

    Don’t you think it could have been much wiser to neutralize SendKeys only in the case of an interaction with an external application? What should the millions of VB6 developers tell their customers now? "Please, if you decide to upgrade to Vista, don’t ever push the Help button or press Enter to move to the next TextBox, otherwise the program will crash!"

    And, besides, don’t you think it is absurd (or even unprofessional) to support SendKeys in .NET 2.0 and make it incompatible with a concomitant operating system?

    If you give me teeth, you should not take them away from me the next day.

    MS promised that, if a VB6 app works under XP, it will also work under Vista. Let’s wait until next January and see how reliable they are…

  6. yochem says:

    Very very good point Pasquale, and mr Boschmans di’dn’t even bother to reply. You are so right. It’s time to abandon Microsoft and move on. They are not the best, certainly not, but they are way too expensive. Remember all you pay for you can get for free through open source.

  7. MSDN Archive says:

    Pasquale, I understand that you’re worried about the Windows Vista compatibility of the VB applications you’ve developped in the past. Since you posted this comment I contacted several people within the Visual Basic Product team to have a look at this. As I haven’t had any news from them so far, I can’t currently add any value to the discussion. Hence why I didn’t comment here yet. I will provide you with an answer as soon as I’ve more info.

    Microsoft has a support cycle for all products of 9+ years. More info on the support story of VB (shipped in 1999) can be found on

    @Yochem: It won’t hurt to have a look at the facts … Just wondering, which open source dev language/IDE has 9+ years product support on 5+ OSs?

  8. Pasquale,

    I’m the VB Program Manager responsible for Visual Basic 6 on Vista.  The SendKeys issues has been corrected and will be released in Vista RC1.  The calls to SendKeys that work under Windows XP will work the same way under Vista.

    Hope that helps.


    Chris Mayo

    Visual Basic Program Manager

  9. Dear Chris,

    Thank you very much indeed for having solved a problem that otherwise would have caused a real headache.

    Please say thank you on my behalf to all the MS Staff who, once again, have revealed their professionalism.

    Keep up the good work.

    All the best.

    Pasquale Esposito

    Perugia, Italy

  10. Mähr Stefan says:

    Now we have RC1 of Vista Ready to go, Sendkeys in VB6 Apps is working but not in .NET 2.0 Apps … sick world.

  11. .NET is the future, so all you need to do is avoid using SendKeys in your new applications.

    The real problem (now sorted out) regarded existing software developed in VB5/VB6, i.e. software already in circulation. (I assume the correction made for VB6 also affects VB5 applications)

    Thank God, Microsoft is a serious company and they take the needs and requests of their customers into great consideration.

  12. Tomas says:


    We’re doing serious automation through keyboard simulation and specific API calls (like the Office API) to do text manipulation and such. The main application is written in .NET 1.1.

    We’ve decided to use the Win32 function Sendinput to do all the text manipulation in applications that don’t have a specific API to do it for us.

    If SendKeys will be gimped in .NET 2.0, what will replace it? Will we have to use Win32 still? I find this very odd if it is the case! Also, SendKeys is very slow compared to using interop and Win32 calls. Also odd.

  13. Tomas, take a look at the MSDN documentation of SendKeys at It describes why SendKeys can behave differently on different operating systems.

  14. Mark says:

    Hello, some people knows if is possible use regsvr32 on vista for dll and ocx registration?


  15. thotak says:

    Hi, I am using a 3rd party utility stamina 32. It crashes on windows vista. I need help with regards to this. thanks

  16. thotak says:

    sorry for my earlier post. the 3rd party utility name is Stamina ASM library. please help me find a solution. thanks

  17. MSDN Archive says:

    @Mark: yes this is possible.

    @thotak: please check with the vendor of the 3rd party library (MicroDexterity) if they have support for Windows Vista. When looking at their site at I’m pretty sure they don’t.

  18. thotak says:

    hi, thanks for your reply.Really appreciate it. Checked with the vendors and found out that they don seem to be having any problem with Vista OS. Can you help me find the list of known issues of legacy VB application/IDE on Vista OS. Where I can I find an exhaustive list of all the scenarios?

  19. MSDN Archive says:

    I suggest you start at the Troucleshooting and Support section of the MSDN site at Post you questions in the appropriate forum/newsgroup.

    I don’t think there’s such a list you’re asking for.

  20. John Moody says:

    Hi, maybe not the ideal forum for this question as it is general, but I note we have a microsoft spokesman on the vb6 vista issue:

    What does microsoft recommend shareware authors to do? I am continuing writing in VB6 even for Vista. I made a .NET version using that wonderful program that converted my VB6 program, but immediately my source code was PIRATED!! by reverse compile. Come on guys, what are we supposed to do here????

  21. MSDN Archive says:

    Hi John, I’m not the Microssoft spokesman on VB6 and Window Vista but I’m helping where possible :-).

    When making .NET code commercially available you should use code obfuscation. Eg: .NET Obfuscator is a tool that can be used for this purpose. This adds at least one level of protection to your source code.

    When writing shareware I would advice you to invest in a good licensing model. You could make a free version with limited functionality available as test. For the full version people would have to pay the full price.

    Every type of code can be reverse engineered so writing in VB6 is not really a solution. I would therefore advice to continue writing software in .NET and look at code obfuscation solutions.

  22. John Moody says:

    Thanks so much for answering, David. I’m a mathematician and so I have a good system of registration keys (automatically change every month, checks against internal serial numbers etc), and requires registration after 30 days of use. I am willing to go with Net Obfuscator…except it is so expensive. Is Microsoft considering helping us get out of VB6 and into .NET by making an obfuscation service available? The one I tried wanted 500 to 1000 dollars. And I note they didn’t use their own system to obfuscate the obfuscator

    :-O   Maybe too tempting for people to crack the obfuscator. Their registration is purely online too.

    Anyway, is there anyway Microsoft can help or advise with the bitter pill of the phenomenal cost of the obfuscator programs?


  23. MSDN Archive says:

    I suggest you have a look at some of the obfuscation tools listed on the site at

    Some of them might be expensive, but others aren’t. You should be able to find what you’re looking for in that list.

  24. Robert Hamilton says:

    Sendkeys generates an error 70 – permission denied under Vista (at least on my system).  The code is very simple.  Just SendKeys "{Tab}".

    Oh well… time to replace that stinker of a command.

  25. While in design mode Sendkeys generates an error 70 (Permission denied) under Vista, when you launch the compiled VB6 exe it doesn’t. This is the behaviour I detected on my PC equipped with Vista Premium (Italian version).

    Pasquale Esposito

    Perugia, Italy

  26. Don Small says:

    Chris Mayo wrote on 7/30/06 that "The SendKeys issues has been corrected and will be released in Vista RC1."  Did this apply only to VB6 and not VBA?  I have several Access 2003 applications that use SendKeys.  In Vista, Access halts with run-time error 70 – permission denied.  I’m using the released version (6.000) of Vista Ultimate.  Was this only partially fixed?  Is there a policy that can be modified to correct this?


  27. Guenter Kloepper says:


    We have a small Excel application that we ship with a Time Reporting system. The associated VBA code makes extensive use of the SendKeys command and customers running the application under Vista are encountering the "Permission denied – error 70" problem.

    I’m tearing my hair out because I can’t figure it out. We have a 6.0.6000 Vista here at the office and the application runs fine with Excel 2002, 2003 and 2007. I currently have two screaming customers also with Vista 6.0.6000 and both are unable to use the application.

    I’ve been going from forum to forum but can’t find out what the current status is. Has the problem been fixed, or not? If it is fixed, what do people need to do to update ? If not, will it be ?

    Please help !

    Guenter Kloepper

    Grenoble, France

  28. All, I forwarded the "Permission denied – error 70" problem to Chris Mayo’s team. He’s tracking down the issue and a possible solution. Chris will be posting a comment on this blog soon.

    Thanks for your patience!

  29. Garry says:

    How does one obtain the RC1 update?

  30. MSDN Archive says:

    Windows Vista is RTM since beginning of 2007. RC1 builds are pre-RTM builds and aren’t available anymore.

  31. Chris says:

    I got several Excel 2003 applications that are not running on Vista because of library problem.

    i find a lot of messages "can’t find the object or library" when i run the debug.

    i got it for some functions like "LEFT" for "FORMAT"

    or even when variable were not previously declared. in this case it looks that opetion explicit is on automatically.

    Can someone help me?



  32. Hello Chris,

    Sounds like you need to open a VBA code page, go to Tools/References and replace the MISSING dependency file with the most recent version of that Reference.

    The Office Experts

    is a great place to ask this kind of question.

    I’m the Access mod there, but starl, firefytr and the rest of the Mr Excel crew support the Excel forum.


  33. Nigel Dyer says:

    I have also fallen foul of the SendKeys problem with a legacy Access application.  A quick workaround was to produce a compiled dll using VB which wrapped the Sendkeys method, and then update the app to use the dll’s method instead  

  34. a3kumarz says:

    Hi Nigel,

    I tried the dll’s method, but it didnt work. It still gives the permission denied error message.

    How did you make it work?

  35. Nigel Dyer says:

    I have posted a zipped file that contains a Vb6 project for creating the dll, the dll, a Readme.txt with instructions, and a vb6 demo project to show it working.  It is not as ‘tidy’ as it could be, but I hope it gives a general idea as to what it could be done

  36. Today’s headlines report that Microsoft will be working to help Google run on Vista because "As part of the [2002] settlement, Microsoft is bound by a consent decree that requires it to help rivals build software that runs smoothly on Windows."

    Too bad we VB programmers aren’t "rivals".  Maybe then our software would run smoothly on Vista 🙂

  37. Scott Joyce says:

    The problem with VB6 applications using the SendKeys function and Vista seems to be down to the UAC in Vista.

    I have found that by turning off the UAC and running my application, either as Administrator or as a normal user, SendKeys works fine but with UAC switched on the SendKeys function does not work at all either running as Administrator or as a normal user.

    I have also noticed that under Vista with UAC switched on when tabbing backwards (SHIFT+TAB) you cannot tab backwards more than one field as the second press of TAB with SHIFT already down does not realise that SHIFT is still held down so tabs forward. This is also solved by turning off the UAC.

    Microsoft seem to have tried to create extra security and in the process stopped alot of already existing applications from working as they were designed to do so using the available tools at the time of development,

    although all of this seems to be fixed if the UAC is switched off, which defeats the purpose of Microsoft implementing the UAC anyway !!

    I hope this in some ways helps people out. I would be grateful if you could post back and let me know if what I have suggested fixes your problems. I know it is not ideal but it is a workaround for now.

  38. Tony Chan says:

    Hi Scott Joyce,

    Thank you for your suggestion. I followed your suggestion and I could run my VB6 project with the SendKeys() function on MS Vista but I found another problem. I tried to bundle my VB6 project into a distribute package with the Package and Deployment Wizard tools and then an error message,"Unexpected error number 380 has occurred:Invalid property value" was shown. Do you have any suggestion about it.

    Tony Chan

  39. Chris Boyd says:

    We provide bespoke accounting apps in VB6 and have just realised how major the problem is with Vista. We have issued advice to our 240 clients (each with up to 16 VB6 apps) to stay with XP while Vista cannot support Sendkeys.

    Re-write, deploy, training and support to avoid Sendkeys is a huge job – any one app. can have 60 refs to Sendkeys. It is also embedded in some ActiveX controls. Some of these apps are less that 6 months old!

    It seems the latest installs of Vista with the latest downloads still don’t work. PLEASE Microsoft – proceed with the plan to make Vista support VB6 Sendkeys.

  40. Craig Matthews says:

    I am getting a UAC dialog about vb6.exe saying that it is from an "unidentified publisher" (since when is Microsoft "unpublished"?).

    I either need a way to have vb6.exe become from an identified publisher, or for the "Allow – I trust this program. I know where it’s from or I’ve used it before" to persist between executions.

    I can’t believe that I am the first one to have this particular problem.

    Anyone have a solution?

  41. Sana says:

    I have a leagacy application having VB6 thich client. There are no modifications/customizations hapenning in that application, except that we are moving our infrastructure to Vista.

    I want to know whether it will be good to migrate this application to web (java/. Net). Or should I continue with the legacy system.

    What is the future of VB6? Will microsofts futher release keep supporting VB6? its seems that microsoft it self is discouraging the use of VB6.  please help me in evaluation of VB6 over .Net/java on vista platform.