Mailbag: How to detect the presence of the Visual C++ 2010 redistributable package


I have seen your previous blog posts that describe how to detect the presence of the Visual C++ 2005 redistributable package and the Visual C++ 2008 redistributable package.  I am creating an installer that requires the Visual C++ 2010 runtime files.  How can I detect the presence of the Visual C++ 2010 redistributable package?


Unlike the Visual C++ 2005 and 2008 redistributable packages, there are registry keys that can be used to detect the presence of the Visual C++ 2010 redistributable package.

Visual C++ 2010 redistributable package detection registry values

Alternatively, like in past releases of the Visual C++ redistributable package, you can use an algorithm like the one I described in my previous blog posts to detect the presence of the Visual C++ 2010 redistributable package on a system:

  1. Call the MsiQueryProductState API
  2. Pass in the product code for the package that you want to detect based on the list below
  3. Check the return value of this API.  If it is anything other than INSTALLSTATE_DEFAULT, the package is not yet installed

Visual C++ 2010 redistributable package product codes

Visual C++ 2010 SP1 redistributable package product codes

<update date="4/12/2011"> Added product codes for Visual C++ 2010 SP1 redistributable packages. </update>


Comments (75)
  1. Martin says:

    I have VS2010 installed, but I don't have these registry keys on my machine.

  2. Hi Martin – These keys are installed by the Visual C++ redistributable package, not by Visual Studio.  Can you please double-check that you have the Visual C++ redistributable package installed in your scenario?

  3. Rob says:

    Hi Aaron, been through quite a few kb, msdn, technet, etc. articles trying to get a handle on managing runtime component dependencies for a couple of 3rd party components we OEM'd and integrated in our .Net app and finally came across your posts for the 2005, 2008 and now this 2010 redist info – thank you, thank you, thank you!  Don't know why I couldn't find similar at MS but again – ty!

  4. Nick H says:

    What is infurating is that this runtime should simply be part of Windows 7.  Way too many things need it.  It's just silly not to have it pre-installed or at the very least it should be part of the pre-reqs for ONE-CLICK installs.

  5. Igor says:

    I have a quick question:

    Do Visual Studio 2010 installation deploy Visual C++ 2010 runtime files even if Visual C++ component of installation is disabled?

  6. Hi Igor – Yes, Visual Studio 2010 setup still installs the VC++ 2010 runtime files even if you uncheck the Visual C++ component during VS setup.  The VC++ runtime files are needed by several parts of Visual Studio, not just the Visual C++ design-time components.  VS setup also installs copies of the VC++ runtime files installers for use as prerequisites if you build installers within Visual Studio for your applications.

  7. jordan from china says:

    i check the registry editor in window 2007 server@Enterprise

    for Visual C++ 2010 Redistributable Package (x64)

    the right directory is below:


    Installed = 1 (REG_DWORD)

    can you do a check?

  8. Hi Jordan from China – Yes, that registry key looks like the correct one to check for the 64-bit VC++ 2010 Redistributable.

  9. RN says:

    From what I understand VC++ 2010 Redist is supported in 10 different langauges. Is there a way from registry to figure out which language of VC++ 2010 Redist is installed?

  10. Hi RN – The VC++ Redistributable is a multi-language package that displays setup UI in the language of your OS when you run it.  The underlying MSI and files that are installed are the same for all languages.  You shouldn't need to detect anything language-specific for this package, and instead can just detect whether it is installed or not in a language-neutral way.

  11. Robert says:

    Since Visual Studio 2010 installs a version of the VC 10.0 runtime, what would we check for in this instance?  We do not need to install the redistributable since Visual Studio installed a version of it.  Would it be sufficient to check for both VS 2010 and the Runtime listed in …VisualStudio10.0VCVCRedist?  Or in this instance, should we still be installing the redistributable?

    Thank you.

  12. Hi Robert – Visual Studio 2010 installs a sub-set of the VC++ 2010 Redistributable, not the full package.  You should not check for that sub-set package, and instead should check for and install the full redistributable in your scenarios.

  13. Robert says:

    Thank you for your response and for the rest of your blog.  It is very helpful.

  14. CMC says:

    Does anyone have the full list of Visual C++ 2010 SP1 redistributable package product codes?

    x86 appears to be {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}, but it would be nice to have someone else validate that (and also get the x64/ia64 codes)

    [my apologies if this posts multiple times, something weird is going on with my machine…]

  15. Hi CMC – Here are the SP1 product codes.  I'll also update the table in the main blog post with this information.

    Visual C++ 2010 SP1 Redistributable (x86) – {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}

    Visual C++ 2010 SP1 Redistributable (x64) – {1D8E6291-B0D5-35EC-8441-6616F567A0F7}

    Visual C++ 2010 SP1 Redistributable (ia64) – {88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}

  16. CMC says:

    Much appreciated!

  17. Ton Grommen says:

    Hi Aaron,

    Is the Visual C++ 2010 SP1 Redistributable also suited for applications developed in Visual Studio 2010 without SP1?

    So is it enough to install the Visual C++ 2010 SP1 Redistributable or should we install both the Visual C++ 2010 Redistributable and the Visual C++ 2010 SP1 Redistributable on target systems?

  18. Hi Ton Grommen – The installer for the Visual C++ 2010 SP1 Redistributable will automatically upgrade the original Visual C++ 2010 Redistributable if it was previously installed on your computer, so you won't be able to install both of them on the same computer.  You should be able to use the SP1 redistributable to run applications created by VS 2010 with or without VS 2010 SP1.

  19. Tobias S says:

    Hi Aaron,

    Thanks for the provided information!

    How do you consider the point that only one VCRedist 2010 package can be installed at the same time (nomore SxS like previous VCRedists) ? For the approach using the Reg keys this doesn't distinguish between RTM and SP1 (SP2…). The approach using MsiQueryProductState API cannot be used when e.g. a SP2 is installed and we want to install a SP1 as we (right now) don't know the Product Code.

    For me I did an approach with FindRelatedProducts and query the product version based on a given Upgrade Code. The WiX code fragment to illustrating that approach is like following (sets property VC2010SP1REDIST_X86 if VCredist 2010 x86 SP1 is installed):

     <Upgrade Id='{1F4F1D2A-D9DA-32CF-9909-48485DA06DD5}'>







    Best regards,


  20. Hi Tobias S – Thanks for posting this information.  I agree that this approach of using the UpgradeCode and the FindRelatedProducts action makes sense for the VC++ 2010 Redistributable.

  21. John F says:

    Can this be detected by file location?

  22. Hi John F – If you wanted to, you could check the versions of the VC++ runtime files in the %windir%system32 directory on a computer to see if they are installed.  If you do this, you should make sure that the files exist and have version number 10.0.30319 or higher.

  23. veeru says:

    just one question. you are saying the registry keys are created when you install the redist or runtime and not when VS 2010 is installed. so, when you uninstall the redist or runtime, will those keys be removed? or just the status of the Install subkey be moved back to 0 instead of 1

    thanks much

  24. Hi Veeru – The Installed registry value will be removed when the VC++ redistributable is uninstalled.

  25. Olda says:

    Hello, I believe there's a third incarnation of VC++ 2010 runtime: 6A86554B-8928-30E4-A53C-D7337689134D, it's version 10.00.30319 (you have keys for versions 10.00.20506.1 (original) and 10.00.40219 (SP1). Not sure how much different it is.

  26. Vinny says:

    We are running various applications that need different versions of VC++ 2010 runtime. Do you have the keys for version 9.0.30729.6161, v10.0.303191 and  v10.0.303 for both x64 and x86?

  27. Hi Vinny – Unlike previous versions of the VC++ Redistributable, updates for the VC++ 2010 Redistributable are delivered as patches instead of new releases of the MSI.  That means that the product code is the same as the original product, and that also means that you cannot use only the product code to determine whether or not an update is installed.

    If you need to be able to detect the installation state of VC++ 2010 Redistributable updates, you can use registry keys like the following:



    In the above key name, the ProductName will be different for each version and processor architecture of the VC++ 2010 Redistributable.  For example, in the VC++ 2010 SP1 x64 Redistributable, it will be Microsoft Visual C++ 2010  x64 Redistributable – 10.0.40219.

    Also, in the above key name, the KB number will be different for each update.

    Overall, my recommendation for the VC++ redistributable packages is to not bother to try to detect if the package is already installed.  Instead, I recommend that you always install them during your installation process.  In the worst case, it will already be installed and it will trigger a repair.  The reason I recommend this is that I've seen enough cases in the past where the detection logic wasn't reliable and/or changed in future service packs, and that ended up causing problems for setup programs that tried to detect the install state.

    You also asked about a 9.0 version of the VC++ Redistributable.  That is the VC++ 2008 Redistributable, and I've got a separate blog post about that version.  You can find it at…/9384143.aspx.

  28. Matt Rhoades says:


    ' Tells you if Visual C++ 2010 Runtime is installed

    Public Function IsVisualCPP10RedistributableInstalled() As Boolean

           Dim ret As Boolean = False

           Dim Check1 As Object = Nothing

           Dim Check2 As Object = Nothing


               If IntPtr.Size = 8 Then

                   ' I'm Running as a 64-bit application

                   Check1 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx64", "Installed", Nothing)

                   Check2 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0VCVCRedistx64", "Installed", Nothing)

                   If Check1 Is Nothing Then Check1 = CInt("0")

                   If Check2 Is Nothing Then Check2 = CInt("0")

                   If (CInt(Check1) = 1) Or (CInt(Check2) = 1) Then

                       ret = True

                   End If


                   ' I'm Running as a 32-bit application

                   Check1 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86", "Installed", Nothing)

                   Check2 = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0VCVCRedistx86", "Installed", Nothing)

                   If Check1 Is Nothing Then Check1 = CInt("0")

                   If Check2 Is Nothing Then Check2 = CInt("0")

                   If (CInt(Check1) = 1) Or (CInt(Check2) = 1) Then

                       ret = True

                   End If

               End If

           Catch ex As Exception

               ret = False

           End Try

           Return ret

       End Function

  29. mjocasio23 says:

    I'm having an issue while scanning a Windows Server 2003 x86 and detects the following vulnerability in reference to Microsoft Foundation Class (mfc100.dll) FOR Visual C++ 2010. It is detecting the wrong version 10.0.40219.325 and it should be 10.0.40219.1. I do see Visual C++ 2008 Redistributable Package for mfc90 VERSION 9.030729.6161. I do not see anything that indicates Visual C++ 2010 Redistributable Package 1, but I do see Microsoft Visual C++ x86 Runtime 10.0.40219 which is not version number the security software is expecting. Any ideas?

  30. Hi Mjocasio23 – I'm not sure I understand your scenario.  Version 40219.325 is a higher version than 40219.1, so it sounds like the updated version of that file is already installed.  Is your scanning software telling you that you still need to install a patch when it is already installed?  If so, what exact scanning software are you using?

  31. mjocasio23 says:

    It should be Version 40219.325 but the security patch install version 40219.1. The scanner is Nessus

  32. Hi Mjocasio23 – Are you referring to this update –…/2565063  If so, and if you've already installed it, then it is possible that there is a problem with the detection logic in the scanning software you're using.  If that's the case, you'll likely need to contact the manufacturer to see if they have any known issues related to detection of VC++ redistributable updates.

  33. mjocasio23 says:

    I see what you saying; they confirm that is the version they expecting to be used for that dll…

    Kind of stuck…. Do not know what to do….

  34. mjocasio23 says:

    I take that back….. Yes that is the KB article and the version is suggesting for file mfc100.dll is 40219.325….. I under hand the software associated with the installtion of software is Microsoft Visual C++ 2010 Runtime version 10.0.40219.To my understanding the article is pointing to software Microaoft Visual C++ 2010 Redistributable x86 in a Winodws Server 2003 Machine. Is it possible the machine does not have the correct security update patch for this file.

  35. Hi Mjocasio23 – Do you know exactly what the scanning software is looking for when it determines that you have version 40219.1 instead of 40219.325?  Is it a registry key, a version of a specific file (if so, which one), etc?

  36. mjocasio23 says:

    Yes the scanner is specting version 40219.325 for mfc100.dll

  37. mjocasio23 says:

    This is the outcome of the scanner

    • e:Program FilesMicrosoft Visual Studio 10.0VCredistx86Microsoft.VC100.MFCmfc100.dll has not been patched

    Remote version : 10.0.40219.1

    Should be : 10.0.40219.325

  38. Hi Mjocasio23 – Have you confirmed that this computer has this security update package installed, and if so, can you double-check the version of that file manually (as opposed to letting the scanner check for you)?  If the version is 40219.1, can you try to uninstall + re-install this security update package to see if it installs the correct version of mfc100.dll?

  39. Sam says:

    Are these checks even necessary for windows 8? I can't seem to find any information regarding it, and some versions of win8 have the keys, some doesn't. Still the software seem to work on all windows 8 machines either way.

  40. Hi Sam – I'm not sure which exact versions of the VC runtimes are included with Winodws 8.  However, in general, it isn't safe to assume that a given version of the VC runtimes are available on a given version of Windows.  I'd always recommend trying to install the redistributable that includes the exact versions that your application needs.

  41. FastEd says:

    I have a failed install of C++ 2010 and cant uninstall or reinstall because i get an error like there is an instance already running,tried an uninstaller specific to remove it but i still get the same error. Can I remove any registry entries?

  42. Hi FastEd – In some cases, rebooting the computer will be enough to clear up this error message.  If that doesn't help, then the suggestions at…/fix-for-windows-error-1500-another.html might help instead.

  43. George Karadjov says:

    Hi Aaron,

    Where did you find the product codes? I am looking for the correct product codes for Microsoft Visual C++ 2012 Redistributable (x86) and Microsoft Visual C++ 2012 Redistributable (x64), but I cannot find them.

    When I check my registry I see:

    • Microsoft Visual C++ 2012 x86 Additional Runtime
    • Microsoft Visual C++ 2012 x86 Minimum Runtime

    • Microsoft Visual C++ 2012 Redistributable

    I am not sure which of these applications’ code I should use.

    Thank you in advance

  44. Hi George Karadjov – I typically download the redistributable installer, extract the .msi and open it in the Orca .msi editing tool too determine the product codes.  I believe that the "Minimum Runtime" and "Additional Runtime" are only installed by Visual Studio and aren't licensed for redistribution, so you shouldn't need to worry about detecting those packages.

  45. George Karadjov says:

    Thank you Aaron,

    I used similar approach and found out that for the redistributable package 'Microsoft Visual C++ 2012 x86' there are two msi. One for 'Microsoft Visual C++ 2012 x86 Additional Runtime' and one for 'Microsoft Visual C++ 2012 x86 Minimum Runtime'. I use the product codes from 'Microsoft Visual C++ 2012 x86 Minimum Runtime' and all 'is installed' checks work correctly. Here are the produce codes for the three updates if someone needs them:

    Microsoft Visual C++ 2012 x86 Minimum Runtime – 11.0.50727


    Microsoft Visual C++ 2012 x86 Minimum Runtime – 11.0.51106


    Microsoft Visual C++ 2012 x86 Minimum Runtime – 11.0.60610



    Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.50727


    Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.51106


    Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.60610


    Thank you for the article Aaron

  46. Narendra says:

    Aaron Stebner, really valuable information.

    Can you or someone please provide a list of product codes for VC++ 2012 (x64, x86 & ia64). I would like to check if VC++ 2012 Redistributable Package is installed or not using the bootstrap mechanism for my product.

    Looking for the list, Thanks in Advance.

  47. Hi Narendra – I think the information you're looking for is in the previous comment from George Karadjov.  Can you give those product codes a try and see if they work in your scenario?

    Note – there is not an ia64 version of the VC++ 2012 redistributable.

  48. PatrickH says:

    I am getting the missing msvcp100.dll error message on a windows 7 laptop.

    I have installed vcredist_x64 restarted and it seems to be installed but I still get the error.

    on boot. Can anyone advise how I might resolve the issue.

  49. PatrickH says:

    I've found a solution to my error message.

    I had to install the 32bit dist (vcredist_x86)also as I think the sl_reader is a 32 bit software.

    Anyway I came across the solution here:…/FIRE-11994

    If anyone has anything to add to my issue solution comments I'd appreciate that.

    All working fine now.

    Thanks for your interesting blog.

  50. Tobias Alte says:

    Thanks Aaron and everyone else for the information. To add to George' list – here is what I am seeing for Visual C++ 2012 Update 4 on Windows 7:


    Microsoft Visual C++ 2012 x86 Minimum Runtime – 11.0.61030



    Microsoft Visual C++ 2012 x64 Minimum Runtime – 11.0.61030


  51. Kenny says:

    Thanks Tobias Alte, the product code (which I searched for long time) works for the VC++ 2012 update4.

    Can you tell me how to get the product code?

  52. Hi Kenny – You can use the Orca tool from the Windows SDK to view the contents of an MSI file to find the product code.  There are other options too (using VBScript or PowerShell, etc) and you can do a web search to find more details about those options if needed.

  53. Eugene says:

    Hi guys! What about product codes for Visual C++ 2013? Cannot find them anywhere.

  54. Hi Eugene – You can find those product codes for yourself if needed.  For example, the Orca tool from the Windows SDK will allow you to view the product code inside a .msi file.

  55. Eugene says:

    Hi Aaron, thank you for your answer. Unfortunatelly, I can't find a way to extract msi from vcredist_2013_x86.exe properly. I tried to run it with /c key – it didn't recognize it. And I tried to extract it as archive using 7Zip but I got only bunch of files with strange names like: "0", "u0", "u1", "u2" etc. But file "0" appeared to be xml with BurnManifest. It contains product codes (for x86: {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E};for x64: {A749D8E6-B613-3BE3-8F5F-045C84EBA29B}) so I tried to use them with <MsiProductCheck> in product.xml for redist package but no luck.

    I also looked what changes happen in HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftWindowsCurrentVersionUninstall registry key (I'm working on Win8.1).  Keys added during installation and removed after deinstallation are different: {ce085a78-074e-4823-8dc1-8a721b94b76d} for x86 and {7f51bdb9-ee21-49ee-94d6-90afc321780e} for x64. But they don't work with <MsiProductCheck> too. It's result is -1 (unknown product) even if they are installed.

    As far as I understand (and I am not an expert in this field) redistributable packages for VC++ 2013 are created using Burn. Maybe there is any other way to check whether such packages are installed?

  56. Hi Eugene – I'm sorry about that.  I forgot that newer versions of the VC++ redistributable are packaged using Burn and that you can't extract the .msi files from the self-extracting packages like you could in pre-Burn packages.

    The best option I can think of is to install the VC++ redistributable package on a test machine and then use the tool and steps listed at…/434814.aspx to gather a list of installed .msi files on your computer and retrieve the product codes that way.

  57. Eugene says:

    Unfortunately I had no time to make the investigation Aaron wrote about. I chose another solution. Now I just use <RegistryCheck> instead of <MsiProductCheck> in my product.xml. I use keys I've found in registry before: {ce085a78-074e-4823-8dc1-8a721b94b76d} for x86 and {7f51bdb9-ee21-49ee-94d6-90afc321780e} for x64. Looks like that:









    This works fine for me.

  58. Jacek says:

    Have some time to run Aaron solution the results after installing x86 Visual 2013 redistributable package is following

    Microsoft Visual C++ 2013 x86 Minimum Runtime – 12.0.21005

    Product code:   {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}
    Product state:  (5) Installed.
    Assignment: per machine
    Package code:   {E9934153-EAB1-4DA6-AA72-86C8BB1EDF2C}
    Version:    12.0.21005
    Publisher:  Microsoft Corporation
    Language:   1033
    Installed from: C:ProgramDataPackage Cache{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}v12.0.21005packagesvcRuntimeMinimum_x86
     &nbsp; &nbsp;Package:  vc_runtimeMinimum_x86.msi
    Help link:  <a rel="nofollow" target="_new" href=""></a>
    Instance type:  0
    Local package:  C:WindowsInstaller12e31f3.msi
    Install date:   2014814
    0 patch packages.

    Microsoft Visual C++ 2013 x86 Additional Runtime – 12.0.21005

    Product code:   {F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}
    Product state:  (5) Installed.
    Assignment: per machine
    Package code:   {5703FD24-BF2D-4D14-AB2F-E415A0361E63}
    Version:    12.0.21005
    Publisher:  Microsoft Corporation
    Language:   1033
    Installed from: C:ProgramDataPackage Cache{F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}v12.0.21005packagesvcRuntimeAdditional_x86
     &nbsp; &nbsp;Package:  vc_runtimeAdditional_x86.msi
    Help link:  <a rel="nofollow" target="_new" href=""></a>
    Instance type:  0
    Local package:  C:WindowsInstaller12e31f9.msi
    Install date:   2014814
    0 patch packages.
  59. JD McCutcheon says:

    I have Win 7 64 bit and already had installed both x86 and x64 Visual C++ 2010 redistributable 10.0.40219 on my computer, I tried to download an update for a program and it said it couldn't install as it detected a newer version of the C++ 2010.  I went into control panel and deleted both programs and it still wouldn't work.  So I went to Microsoft to download these 2 programs again and both fail to install. I checked the registry and the key for VisualStudio does not exist, as it indicates below.  I can't figure out where my other C++ programs (2005, 2008, 2012, 2013) exist to check if that key is there.

    Part of My Log:

    BlockIf evaluated to false

    BlockIf: A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.

    A newer version of Microsoft Visual C++ 2010 Redistributable has been detected on the machine.

    evaluating BlockIf:

    And: evaluating

    Equals: evaluating

    Current Operation value is Installing

    Equals evaluated to true

    LessThan: evaluating

    RegKeyValue: HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86Bld does NOT exist.

    returning BoolWhenNonExistent's value: false

    LessThan evaluated to false

    And evaluated to false

    BlockIf evaluated to false

    Global Block Checks no blocking conditions found

    Creating new Performer for MSI item

    Action: Performing Action on MSI at c:1a3bc65644edadf1b2010dvc_red.msi

    Log File C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt does not yet exist but may do at Watson upload time

    Calling MsiInstallProduct(c:1a3bc65644edadf1b2010dvc_red.msi, EXTUI=1

     Returning IDOK. INSTALLMESSAGE_ERROR [Access is denied. ]

    MSI (c:1a3bc65644edadf1b2010dvc_red.msi) Installation failed. Msi Log: Microsoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt

    PerformOperation returned 1603 (translates to HRESULT = 0x80070643)

    Action complete

    OnFailureBehavior for this item is to Rollback.

    Action: Performing actions on all Items

    Action complete

    Action complete

    Final Result: Installation failed with error code: (0x80070643), "Fatal error during installation. " (Elapsed time: 0 00:00:05).

    WM_ACTIVATEAPP: Focus stealer's windows WAS visible, NOT taking back focus

    Sending Manifest Report

  60. Hi JD McCutcheon – The log information that you listed above shows that the VC++ redistributable installer did not find a newer version of the VC++ redistributable installed.  There should be more detailed information about what is causing this failure in the log named %temp%Microsoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt.  Can you please zip that file, upload it to a file server (such as and then reply back here and post a link that I can use to download that log file and take a closer look?

  61. JD McCutcheon says:

    Aaron, try this:

  62. Hi JD McCutcheon – I clicked on that link, but it says that you're not currently sharing anything.  Can you please double-check the sharing settings for the logs that you uploaded?

  63. JD says:

    I'm sorry I've never used this before. See if these work, otherwise I'll need your email address.

  64. Hi JD – I was able to download the logs from these new links.  Unfortunately, the logs that you uploaded only show the information from before (a newer version of the VC++ redistributable is already installed).  The logs do show what registry keys it found that made it decide that this was the case:

        HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx64Bld contains '40219'

        HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0VCVCRedistx86Bld contains '40219'

    Do you have a log named C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt on your computer?  If so, can you please upload that one too?

    If not, can you please try to use the steps described at…/487096.aspx to see if you can locate and uninstall any other versions of the VC++ 2010 redistributable from your computer?

  65. JD McCutcheon says:

    Hey Aaron.  This file: HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio is not there. The "VisualStudio" file is missing, that's part of my problem.  

    Also this log is not there: C:UsersJDAppDataLocalTempMicrosoft Visual C++ 2010 x86 Redistributable Setup_20140906_140146581-MSI_vc_red.msi.txt

    As I don't have any previous versions (that I know of) on my computer.

    I can delete both of my C+++ 2010 files, but if I try to download them again, I get the error message and I have to use a restore point, to get them back on my computer.

    Here is the msiinv file, but I don't see any previous versions there either.

  66. Hi JD McCutcheon – If your OS is 64-bit, that registry key will be at the following location:


    Can you please check there as well?

    Also, I looked at your msiinv output, and it shows that the following versions of the Visual C++ 2010 redistributable are installed:

        Microsoft Visual C++ 2010  x64 Redistributable – 10.0.40219

    Product code:   {1D8E6291-B0D5-35EC-8441-6616F567A0F7}

        Microsoft Visual C++ 2010  x86 Redistributable – 10.0.40219

    Product code:   {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}

    Can you please try removing those products using steps 3-7 in the blog post at…/487096.aspx and see if that helps resolve the issue that you're seeing?

  67. JD McCutcheon says:

    The registry key is under the Wow6432node.  So that checks out. Thanks!

    I can easily remove those 2 C++ 2010 files, because they are both in my Control panel under add/remove programs, but then the new ones won't install and I have to use a restore point to put them back on.  

    This whole issue came about when I was trying to install a program.  I found out the issue was the "KB2918614 Windows Security Update".  I deleted it and the program was able to install.  However I am still unable to download the updated C++ 2010 files.  At this point, I don't know that I need to, but it is a vexing problem.

  68. Hi JD McCutcheon – So far, the only log files that you have uploaded have showed the VC++ 2010 redistributable failing because a newer version was already installed on your computer.  Do you have log files that you can upload from the scenario where you uninstall the versions of the VC++ 2010 redistributable that you currently have installed and then try to install the other versions?

    Also, it sounds like your original problem was that you tried to install an application, and it tried to install the older versions of the VC++ 2010 redistributable behind the scenes, those failed and as a result, you couldn't install the application.  In your most recent post, you said that you've been able to install your application now.  If that's the case, then you can probably just leave the current versions of the VC++ 2010 redistributable installed and not worry about trying to go back and install the older versions.

  69. ryan green says:

    How do I find where the C++ thing is located VIA control panel?

  70. Hi Ryan Green – The VC++ Redistributable does not allow the user to choose an install path.  It always installs to a location under the PC's Windows directory (the exact location varies from version to version).  You shouldn't need to know the exact location of the files – applications will find them in their installed locations if they need them.

  71. Himanshu says:

    My product installs different VC Redistributable packages that include VC2005, 2008, 2010 and so on. I am creating a installation diagnose utility that user would run when the product does not function correctly. One of the functions of diagnose utility is to check if all the required redistributable packages are installed or not. As per the advice in this blog, I use MsiQueryProductState to check if particular VC Redistributable package is installed or not. Since, my product installs VC 2010 (Base) version of redistributable package, and if the version of VC 2010 Installed on the system is SP1, my diagnose check fails. How can I check which version of VC 2010 is installed on the system, so that even if user has a higher version than what my product requires, the test case passes. In future, if microsoft releases say SP2 for VC2010, my utility should detect that too. It should not be guid specific. Is there any way out?

  72. Hi Himanshu – I don't know of a way to reliably implement detection logic that would be future-proof like you're describing.  You might be able to parse registry values under the Uninstall sub-key like what is described at…/how-to-detect-visual-c-2013-redistributable-package, but since it is not officially documented as supported, there's no guarantee that a future service pack would continue to work with this detection logic.

    There are some other detection ideas discussed at…/detect-if-visual-c-redistributable-for-visual-studio-2012-is-installed that might be helpful in your scenario too.

  73. XcentY says:


  74. OSVBNET says:

    Why each VC++ update is different, the whole VC++ Redist dev is very confusing!
    I just wanna check if VC++ 2010 x64/x86 is installed or not? Any patch or update is not different!
    Your registry check method does NOT work for VC++ 2010 version 10.0.40219.
    I just installed VC++ 2010 version 10.0.40219 on a clean Windows install and there must be a way to detect the presence of ANY VC++ 2010 version/patch/update?
    During all these years, from 2005 to 2017 many VC++ versions and updates released, they never had a unique way of installing, what a big disappointment is MS! An Example: They release W10 1809 with the maximum number of fatal bugs possible!

  75. vartaxe says:

    .\2005\x64\SP1MFC\vcredist_x64.EXE /Q
    .\2005\x86\SP1MFC\vcredist_x86.EXE /Q
    .\2008\x64\SP1MFC\vcredist_x64.exe /Q
    .\2008\x86\SP1MFC\vcredist_x86.exe /Q
    .\2010\x64\SP1\vcredist_x64.exe /quiet /norestart
    .\2010\x86\SP1\vcredist_x86.exe /quiet /norestart
    .\2012\x64\Update4\vcredist_x64.exe /install /quiet /norestart
    .\2012\x86\Update4\vcredist_x86.exe /install /quiet /norestart
    .\2013\x64\Update5\vcredist_x64.exe /install /quiet /norestart
    .\2013\x86\Update5\vcredist_x86.exe /install /quiet /norestart
    rem .\2015\x64\Update3\vcredist_x64.exe /install /quiet /norestart
    rem .\2015\x86\Update3\vcredist_x86.exe /install /quiet /norestart
    .\2017\x64\RTM\vc_redist.x64.exe /install /quiet /norestart
    .\2017\x86\RTM\vc_redist.x86.exe /install /quiet /norestart

    msiexec /x {ad8a2fa1-06e7-4b0d-927d-6e54b3d31028} /qn
    msiexec /x {710f4c1c-cc18-4c49-8cbf-51240c89a1a2} /qn
    msiexec /x {5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4} /qn
    msiexec /x {9BE518E6-ECC6-35A9-88E4-87755C07200F} /qn
    msiexec /x {1D8E6291-B0D5-35EC-8441-6616F567A0F7} /qn
    msiexec /x {F0C3E5D1-1ADE-321E-8167-68EF0DE699A5} /qn
    msiexec /x {ca67548a-5ebe-413a-b50c-4b9ceb6d66c6} /qn
    msiexec /x {33d1fd90-4274-48a1-9bc1-97e33d9c2d6f} /qn
    msiexec /x {042d26ef-3dbe-4c25-95d3-4c1b11b235a7} /qn
    msiexec /x {9dff3540-fc85-4ed5-ac84-9e3c7fd8bece} /qn
    rem msiexec /x {d992c12e-cab2-426f-bde3-fb8c53950b0d} /qn
    rem msiexec /x {e2803110-78b3-4664-a479-3611a381656a} /qn
    msiexec /x {5fb2083a-f3cc-4b78-93ff-bd9788b5de01} /qn
    msiexec /x {2ff11a2a-f7ac-4a6c-8cd4-c7bb974f3642} /qn

Comments are closed.

Skip to main content