Last updated October 16 2019.
This post discusses how to check if the Microsoft Visual C++ Runtime is installed. If you’re just looking for a quick way to do this, you may want to consider using the library MscVersion source code on GitHub and a package on NuGet. MscVersion is a pure C# library alternative to the _MSC_VER macro in C++ which lets you check what version of the VcRuntime is installed.
In C++
if we want to check if a particular version of the runtime is installed we can write conditionals to test the value of the built-in preprocessor macro _MSC_VER
against known values indicating major releases of the Visual C++ compiler. See this post from the Visual C++ Team Blog on Visual C++ Compiler Version and the MSDN page on Predefined Macros.
1
2
3
4
5
6
7
#if _MSC_VER >= 1900
// ...
#elif _MSC_VER >= 1800
// ...
#else
// ...
#endif
The following table highlights the major versions of Visual C++ against the _MSC_VER value.
Visual Studio Version | MSVC++ Version | _MSC_VER |
---|---|---|
Visual Studio 97 version 5.0 | MSVC++ 5.0 | 1100 |
Visual Studio 6.0 version 6.0 | MSVC++ 6.0 | 1200 |
Visual Studio .NET 2002 version 7.0 | MSVC++ 7.0 | 1300 |
Visual Studio .NET 2003 version 7.1 | MSVC++ 7.1 | 1310 |
Visual Studio 2005 version 8.0 | MSVC++ 8.0 | 1400 |
Visual Studio 2008 version 9.0 | MSVC++ 9.0 | 1500 |
Visual Studio 2010 version 10.0 | MSVC++ 10.0 | 1600 |
Visual Studio 2012 version 11.0 | MSVC++ 11.0 | 1700 |
Visual Studio 2013 version 12.0 | MSVC++ 12.0 | 1800 |
Visual Studio 2015 version 14.0 | MSVC++ 14.0 | 1900 |
Visual Studio 2017 version 15.0 | MSVC++ 14.1 | 1910 |
Visual Studio 2017 version 15.3 | MSVC++ 14.11 | 1911 |
Visual Studio 2017 version 15.5 | MSVC++ 14.12 | 1912 |
Visual Studio 2017 version 15.6 | MSVC++ 14.13 | 1913 |
Visual Studio 2017 version 15.7 | MSVC++ 14.14 | 1914 |
In C#
its not so easy. Instead we have to look for the Visual C++ runtime as installed products. The Microsoft Windows Installer function MsiQueryProductState()
can help with this. It takes a product code guid as the input parameter, and returns the installation state of the program.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
namespace ConsoleApp1
{
public static class MsiProduct
{
public static IEnumerable<Guid> GetInstalledProducts(IEnumerable<Guid> productCodes)
{
return productCodes.Where(IsProductInstalled);
}
public static bool IsProductInstalled(IEnumerable<Guid> productCodes)
{
return productCodes.Any(IsProductInstalled);
}
public static bool IsProductInstalled(Guid productCode)
{
var state = MsiQueryProductState($"{{{productCode}}}");
if (state == InstallState.INSTALLSTATE_LOCAL ||
state == InstallState.INSTALLSTATE_DEFAULT)
{
return true;
}
return false;
}
[DllImport("msi.dll")]
private static extern InstallState MsiQueryProductState(string product);
private enum InstallState
{
INSTALLSTATE_NOTUSED = -7, // component disabled
INSTALLSTATE_BADCONFIG = -6, // configuration datacorrupt
INSTALLSTATE_INCOMPLETE = -5, // installationsuspended or in progress
INSTALLSTATE_SOURCEABSENT = -4, // run from source,source is unavailable
INSTALLSTATE_MOREDATA = -3, // return bufferoverflow
INSTALLSTATE_INVALIDARG = -2, // invalid functionargument
INSTALLSTATE_UNKNOWN = -1, // unrecognized productor feature
INSTALLSTATE_BROKEN = 0, // broken
INSTALLSTATE_ADVERTISED = 1, // advertised feature
INSTALLSTATE_REMOVED = 1, // component being removed(action state, not settable)
INSTALLSTATE_ABSENT = 2, // uninstalled (or actionstate absent but clients remain)
INSTALLSTATE_LOCAL = 3, // installed on local drive
INSTALLSTATE_SOURCE = 4, // run from source, CD or net
INSTALLSTATE_DEFAULT = 5 // use default, local or source
}
}
}
We therefore need to know the guid product code of each version to check if its installed. As it turns out, there are a lot of versions. Microsoft don’t seem to publish a full list with associated guids either, so we have to assemble our own.
Assembling the full list was a little time consuming, but as of the time of writing the class below can detect every version of the runtime released to date.
Calling VcRuntime.KnownRuntimeVersions
will return the full list of known runtimes and guids, and GetInstalledRuntimeVersions()
will do just that. Pass it a collection of VcRuntimeVersion
typed objects and it will tell you which of those product versions, if any, are installed.
We can use these two functions to craft expressive queries. In the following example, I want to know if any versions of the vc++ runtime are installed from Visual Studio 2013 onwards which also target 64bit operating systems.
1
2
var filteredRuntimes = VcRuntime.KnownRuntimeVersions.Where(n => n.MscVer >= VcRuntime.MscVersion.VisualStudio2013 && n.Architecture == VcRuntime.ArchitectureType.x64);
var installedRuntimes = VcRuntime.GetInstalledRuntimeVersions(filteredRuntimes);
The full VcRuntime
class is below:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp1
{
public static class VcRuntime
{
public enum MscVersion
{
VisualStudio2003 = 1300, // MSVC++ 7.0
VisualStudio2005 = 1400, // MSVC++ 8.0
VisualStudio2008 = 1500, // MSVC++ 9.0
VisualStudio2010 = 1600, // MSVC++ 10.0
VisualStudio2012 = 1700, // MSVC++ 11.0
VisualStudio2013 = 1800, // MSVC++ 12.0
VisualStudio2015 = 1900, // MSVC++ 14.0
VisualStudio2017 = 1910 // MSVC++ 14.1
}
public enum ArchitectureType
{
x86,
x64,
IA64
}
public class VcRuntimeVersion
{
public Guid Guid { get; set; }
public MscVersion MscVer { get; set; }
public ArchitectureType Architecture { get; set; }
public string Version { get; set; }
public VcRuntimeVersion(Guid guid, MscVersion mscVer, ArchitectureType architecture, string version = "")
{
Guid = guid;
MscVer = mscVer;
Architecture = architecture;
Version = version;
}
}
public static IEnumerable<VcRuntimeVersion> GetInstalledRuntimeVersions(IEnumerable<VcRuntimeVersion> filteredRuntimeVersions)
{
return filteredRuntimeVersions.Where(runtimeVersion => MsiProduct.IsProductInstalled(runtimeVersion.Guid));
}
public static List<VcRuntimeVersion> KnownRuntimeVersions => new List<VcRuntimeVersion>
{
// MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
new VcRuntimeVersion(Guid.Parse("{A49F249F-0C91-497F-86DF-B2585E8E76B7}"), MscVersion.VisualStudio2005, ArchitectureType.x86),
new VcRuntimeVersion(Guid.Parse("{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}"), MscVersion.VisualStudio2005, ArchitectureType.x64),
new VcRuntimeVersion(Guid.Parse("{03ED71EA-F531-4927-AABD-1C31BCE8E187}"), MscVersion.VisualStudio2005, ArchitectureType.IA64),
new VcRuntimeVersion(Guid.Parse("{C1C4F017-81CC-94C4-C8FB-1542C0981A2A}"), MscVersion.VisualStudio2005, ArchitectureType.x86, "6.0.2900.2180"),
new VcRuntimeVersion(Guid.Parse("{1AF2A8DA-7E60-D0B4-29D7-E6453B3D0182}"), MscVersion.VisualStudio2005, ArchitectureType.x64, "6.0.2900.2180"),
new VcRuntimeVersion(Guid.Parse("{7299052B-02A4-4627-81F2-1818DA5D550D}"), MscVersion.VisualStudio2005, ArchitectureType.x86, "SP1"),
new VcRuntimeVersion(Guid.Parse("{071C9B48-7C32-4621-A0AC-3F809523288F}"), MscVersion.VisualStudio2005, ArchitectureType.x64, "SP1"),
new VcRuntimeVersion(Guid.Parse("{0F8FB34E-675E-42ED-850B-29D98C2ECE08}"), MscVersion.VisualStudio2005, ArchitectureType.IA64, "SP1"),
new VcRuntimeVersion(Guid.Parse("{837B34E3-7C30-493C-8F6A-2B0F04E2912C}"), MscVersion.VisualStudio2005, ArchitectureType.x86, "SP1_ATL_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}"), MscVersion.VisualStudio2005, ArchitectureType.x64, "SP1_ATL_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{85025851-A784-46D8-950D-05CB3CA43A13}"), MscVersion.VisualStudio2005, ArchitectureType.IA64, "SP1_ATL_SEC_UPD"),
// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
new VcRuntimeVersion(Guid.Parse("{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}"), MscVersion.VisualStudio2008, ArchitectureType.x86),
new VcRuntimeVersion(Guid.Parse("{350AA351-21FA-3270-8B7A-835434E766AD}"), MscVersion.VisualStudio2008, ArchitectureType.x64),
new VcRuntimeVersion(Guid.Parse("{2B547B43-DB50-3139-9EBE-37D419E0F5FA}"), MscVersion.VisualStudio2008, ArchitectureType.IA64),
new VcRuntimeVersion(Guid.Parse("{6E815EB9-6CCE-9A53-884E-7857C57002F0}"), MscVersion.VisualStudio2008, ArchitectureType.x86, "9.0.30729.5677"),
new VcRuntimeVersion(Guid.Parse("{67D6ECF5-CD5F-BA73-2B8B-22BAC8DE1B4D}"), MscVersion.VisualStudio2008, ArchitectureType.x64, "9.0.30729.5677"),
new VcRuntimeVersion(Guid.Parse("{9A25302D-30C0-39D9-BD6F-21E6EC160475}"), MscVersion.VisualStudio2008, ArchitectureType.x86, "SP1"),
new VcRuntimeVersion(Guid.Parse("{8220EEFE-38CD-377E-8595-13398D740ACE}"), MscVersion.VisualStudio2008, ArchitectureType.x64, "SP1"),
new VcRuntimeVersion(Guid.Parse("{5827ECE1-AEB0-328E-B813-6FC68622C1F9}"), MscVersion.VisualStudio2008, ArchitectureType.IA64, "SP1"),
new VcRuntimeVersion(Guid.Parse("{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}"), MscVersion.VisualStudio2008, ArchitectureType.x86, "SP1_ATL_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}"), MscVersion.VisualStudio2008, ArchitectureType.x64, "SP1_ATL_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{977AD349-C2A8-39DD-9273-285C08987C7B}"), MscVersion.VisualStudio2008, ArchitectureType.IA64, "SP1_ATL_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{9BE518E6-ECC6-35A9-88E4-87755C07200F}"), MscVersion.VisualStudio2008, ArchitectureType.x86, "9.0.30729.6161 - SP1_MFC_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}"), MscVersion.VisualStudio2008, ArchitectureType.x64, "9.0.30729.6161 - SP1_MFC_SEC_UPD"),
new VcRuntimeVersion(Guid.Parse("{515643D1-4E9E-342F-A75A-D1F16448DC04}"), MscVersion.VisualStudio2008, ArchitectureType.IA64, "9.0.30729.6161 - SP1_MFC_SEC_UPD"),
// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
new VcRuntimeVersion(Guid.Parse("{196BB40D-1578-3D01-B289-BEFC77A11A1E}"), MscVersion.VisualStudio2010, ArchitectureType.x86),
new VcRuntimeVersion(Guid.Parse("{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}"), MscVersion.VisualStudio2010, ArchitectureType.x64),
new VcRuntimeVersion(Guid.Parse("{C1A35166-4301-38E9-BA67-02823AD72A1B}"), MscVersion.VisualStudio2010, ArchitectureType.IA64),
new VcRuntimeVersion(Guid.Parse("{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"), MscVersion.VisualStudio2010, ArchitectureType.x86, "10.0.40219 - SP1"),
new VcRuntimeVersion(Guid.Parse("{1D8E6291-B0D5-35EC-8441-6616F567A0F7}"), MscVersion.VisualStudio2010, ArchitectureType.x64, "10.0.40219 - SP1"),
new VcRuntimeVersion(Guid.Parse("{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}"), MscVersion.VisualStudio2010, ArchitectureType.IA64, "10.0.40219 - SP1"),
new VcRuntimeVersion(Guid.Parse("{1D5E3C0F-EDA1-E123-1876-86FED06E995A}"), MscVersion.VisualStudio2010, ArchitectureType.x86, "10.0.40219.325"),
new VcRuntimeVersion(Guid.Parse("{1926E8D1-5D0B-CE53-4814-66615F760A7F}"), MscVersion.VisualStudio2010, ArchitectureType.x64, "10.0.40219.325"),
// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
new VcRuntimeVersion(Guid.Parse("{33D1FD90-4274-48A1-9BC1-97E33D9C2D6F}"), MscVersion.VisualStudio2012, ArchitectureType.x86, "11.0.61030.0"),
new VcRuntimeVersion(Guid.Parse("{CA67548A-5EBE-413A-B50C-4B9CEB6D66C6}"), MscVersion.VisualStudio2012, ArchitectureType.x64, "11.0.61030.0"),
new VcRuntimeVersion(Guid.Parse("{BD95A8CD-1D9F-35AD-981A-3E7925026EBB}"), MscVersion.VisualStudio2012, ArchitectureType.x86, "11.0.61030.0 - Minimum runtime (Update 4)"),
new VcRuntimeVersion(Guid.Parse("{CF2BEA3C-26EA-32F8-AA9B-331F7E34BA97}"), MscVersion.VisualStudio2012, ArchitectureType.x64, "11.0.61030.0 - Minimum runtime (Update 4)"),
new VcRuntimeVersion(Guid.Parse("{B175520C-86A2-35A7-8619-86DC379688B9}"), MscVersion.VisualStudio2012, ArchitectureType.x86, "11.0.61030.0 - Additional runtime (Update 4)"),
new VcRuntimeVersion(Guid.Parse("{37B8F9C7-03FB-3253-8781-2517C99D7C00}"), MscVersion.VisualStudio2012, ArchitectureType.x64, "11.0.61030.0 - Additional runtime (Update 4)"),
// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
new VcRuntimeVersion(Guid.Parse("{F65DB027-AFF3-4070-886A-0D87064AABB1}"), MscVersion.VisualStudio2013, ArchitectureType.x86, "12.0.30501"),
new VcRuntimeVersion(Guid.Parse("{050D4FC8-5D48-4B8F-8972-47C82C46020F}"), MscVersion.VisualStudio2013, ArchitectureType.x64, "12.0.30501"),
new VcRuntimeVersion(Guid.Parse("{13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}"), MscVersion.VisualStudio2013, ArchitectureType.x86, "12.0.30501 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{A749D8E6-B613-3BE3-8F5F-045C84EBA29B}"), MscVersion.VisualStudio2013, ArchitectureType.x64, "12.0.30501 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{F8CFEB22-A2E7-3971-9EDA-4B11EDEFC185}"), MscVersion.VisualStudio2013, ArchitectureType.x86, "12.0.30501 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{929FBD26-9020-399B-9A7A-751D61F0B942}"), MscVersion.VisualStudio2013, ArchitectureType.x64, "12.0.30501 - Additional runtime"),
// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
new VcRuntimeVersion(Guid.Parse("{74D0E5DB-B326-4DAE-A6B2-445B9DE1836E}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.23026"),
new VcRuntimeVersion(Guid.Parse("{E46ECA4F-393B-40DF-9F49-076FAF788D83}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.23026"),
new VcRuntimeVersion(Guid.Parse("{A2563E55-3BEC-3828-8D67-E5E8B9E8B675}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.23026 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{0D3E9E15-DE7A-300B-96F1-B4AF12B96488}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.23026 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{BE960C1C-7BAD-3DE6-8B1A-2616FE532845}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.23026 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{BC958BD2-5DAC-3862-BB1A-C1BE0790438D}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.23026 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{2E085FD2-A3E4-4B39-8E10-6B8D35F55244}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.23918.0"),
new VcRuntimeVersion(Guid.Parse("{DAB68466-3A7D-41A8-A5CF-415E3FF8EF71}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.23918.0"),
new VcRuntimeVersion(Guid.Parse("{8FD71E98-EE44-3844-9DAD-9CB0BBBC603C}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.24210"),
new VcRuntimeVersion(Guid.Parse("{C0B2C673-ECAA-372D-94E5-E89440D087AD}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.24210"),
new VcRuntimeVersion(Guid.Parse("{BBF2AC74-720C-3CB3-8291-5E34039232FA}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.24215 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{50A2BC33-C9CD-3BF1-A8FF-53C10A0B183C}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.24215 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{C956892E-D1F3-3781-935C-8D9060E7CD7E}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.24215 - Debug runtime"),
new VcRuntimeVersion(Guid.Parse("{406CC721-9FAD-3610-B44E-3130F84358D8}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.24215 - Debug runtime"),
new VcRuntimeVersion(Guid.Parse("{69BCE4AC-9572-3271-A2FB-9423BDA36A43}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.24215 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{EF1EC6A9-17DE-3DA9-B040-686A1E8A8B04}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.24215 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{E2803110-78B3-4664-A479-3611A381656A}"), MscVersion.VisualStudio2015, ArchitectureType.x86, "14.0.24215.1"),
new VcRuntimeVersion(Guid.Parse("{D992C12E-CAB2-426F-BDE3-FB8C53950B0D}"), MscVersion.VisualStudio2015, ArchitectureType.x64, "14.0.24215.1"),
// MSVC++ 14.1 _MSC_VER >= 1910 (Visual Studio 2017)
new VcRuntimeVersion(Guid.Parse("{7d9c81d7-a921-4503-8518-38fc0c94b692}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24629.0-rc1"),
new VcRuntimeVersion(Guid.Parse("{c60f2e5a-912d-426c-a6b1-8a80bebab424}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24629.0-rc1"),
new VcRuntimeVersion(Guid.Parse("{27B6EB53-CB9C-3461-B05D-EB5210EBA3D4}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24629 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{C8086B63-C436-3F8B-8064-CE8F27815C5F}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24629 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{44EC2AE5-F313-3E2A-8167-9923138ED5B4}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24629 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{ADC1B84A-D61D-3B2F-854A-8F872E51BB65}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24629 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{C64E9A20-DF31-4B11-ADA1-00909EB1B508}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24911-rc5"),
new VcRuntimeVersion(Guid.Parse("{0A898FD4-A90B-46E2-8F20-46DDB3F24B6E}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24911-rc5"),
new VcRuntimeVersion(Guid.Parse("{0C1C3F23-69C2-3D3D-9865-F8B6215289CD}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24911-rc5 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{F0793C5B-0227-3294-91DE-0385602C6CBC}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24911-rc5 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{568BE2F1-A2B2-3705-BF3E-8E6197382A46}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24911-rc5 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{E9A123F9-306E-3A29-88B9-5CD521D9109D}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24911-rc5 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{3E053C90-8E3B-4A1B-AB2E-AFB57D20F4B0}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24930-rc6"),
new VcRuntimeVersion(Guid.Parse("{20B93B94-495D-4022-A84F-F598998991BF}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24930-rc6"),
new VcRuntimeVersion(Guid.Parse("{984D10BE-0781-3A9D-80FB-03540E0C3B42}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24930-rc6 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{9F50D497-02C0-3BBB-9103-BFE6204FA318}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24930-rc6 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{9AAEB713-D24D-37A4-8FBC-7A24739D3156}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.24930-rc6 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{A8755EE8-AD62-37FE-B106-243DC209CF52}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.24930-rc6 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{C239CEA1-D49E-4E16-8E87-8C055765F7EC}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.25008-rtm"),
new VcRuntimeVersion(Guid.Parse("{F1E7E313-06DF-4C56-96A9-99FDFD149C51}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.25008-rtm"),
new VcRuntimeVersion(Guid.Parse("{C6CDA568-CD91-3CA0-9EDE-DAD98A13D6E1}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.25008-rtm - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{8D50D8C6-1E3D-3BAB-B2B7-A5399EA1EBD1}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.25008-rtm - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{2F8A908C-0CCD-3BDD-9212-DC6696525139}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.25008-rtm - Debug runtime"),
new VcRuntimeVersion(Guid.Parse("{B0763AF1-2B66-33B7-B6AF-78E123AEA826}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.25008-rtm - Debug runtime"),
new VcRuntimeVersion(Guid.Parse("{E6222D59-608C-3018-B86B-69BD241ACDE5}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.10.25008-rtm - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{C668F044-4825-330D-8F9F-3CBFC9F2AB89}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.10.25008-rtm - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{404c9c27-8377-4fd1-b607-7ca635db4e49}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.11.25325"),
new VcRuntimeVersion(Guid.Parse("{6c6356fe-cbfa-4944-9bed-a9e99f45cb7a}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.11.25325"),
new VcRuntimeVersion(Guid.Parse("{029DA848-1A80-34D3-BFC1-A6447BFC8E7F}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.11.25325 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{B0037450-526D-3448-A370-CACBD87769A0}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.11.25325 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{568CD07E-0824-3EEB-AEC1-8FD51F3C85CF}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.11.25325 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{B13B3E11-1555-353F-A63A-8933EE104FBD}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.11.25325 - Additional runtime"),
new VcRuntimeVersion(Guid.Parse("{e2ee15e2-a480-4bc5-bfb7-e9803d1d9823}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.12.25810"),
new VcRuntimeVersion(Guid.Parse("{56e11d69-7cc9-40a5-a4f9-8f6190c4d84d}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.12.25810"),
new VcRuntimeVersion(Guid.Parse("{2CD849A7-86A1-34A6-B8F9-D72F5B21A9AE}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.12.25810 - Additional Runtime"),
new VcRuntimeVersion(Guid.Parse("{7FED75A1-600C-394B-8376-712E2A8861F2}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.12.25810 - Additional Runtime"),
new VcRuntimeVersion(Guid.Parse("{C99E2ADC-0347-336E-A603-F1992B09D582}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.12.25810 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{828952EB-5572-3666-8CA9-000B6CE79350}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.12.25810 - Minimum runtime"),
new VcRuntimeVersion(Guid.Parse("{03EBF679-E886-38AD-8E70-28658449F7F9}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.14.26429 - Minimum Runtime"),
new VcRuntimeVersion(Guid.Parse("{7753EC39-3039-3629-98BE-447C5D869C09}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.14.26429 - Minimum Runtime"),
new VcRuntimeVersion(Guid.Parse("{B12F584A-DE7A-3EE3-8EC4-8A64DBC0F2A7}"), MscVersion.VisualStudio2017, ArchitectureType.x64, "14.14.26429 - Additional Runtime"),
new VcRuntimeVersion(Guid.Parse("{6F0267F3-7467-350D-A8C8-33B72E3658D8}"), MscVersion.VisualStudio2017, ArchitectureType.x86, "14.14.26429 - Additional Runtime")
};
}
}
The information used to build the code for this post is reprinted below in tabular format, for reader convenience.
MSVC++ 8.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{a49f249f-0c91-497f-86df-b2585e8e76b7} | x86 | Visual Studio 2005 | ||
{6e8e85e8-ce4b-4ff5-91f7-04999c9fae6a} | x64 | Visual Studio 2005 | ||
{03ed71ea-f531-4927-aabd-1c31bce8e187} | IA64 | Visual Studio 2005 | ||
{c1c4f017-81cc-94c4-c8fb-1542c0981a2a} | x86 | Visual Studio 2005 | 6.0.2900.2180 | |
{1af2a8da-7e60-d0b4-29d7-e6453b3d0182} | x64 | Visual Studio 2005 | 6.0.2900.2180 | |
{7299052b-02a4-4627-81f2-1818da5d550d} | x86 | Visual Studio 2005 | SP1 | |
{071c9b48-7c32-4621-a0ac-3f809523288f} | x64 | Visual Studio 2005 | SP1 | |
{0f8fb34e-675e-42ed-850b-29d98c2ece08} | IA64 | Visual Studio 2005 | SP1 | |
{837b34e3-7c30-493c-8f6a-2b0f04e2912c} | x86 | Visual Studio 2005 | SP1_ATL_SEC_UPD | |
{6ce5bae9-d3ca-4b99-891a-1dc6c118a5fc} | x64 | Visual Studio 2005 | SP1_ATL_SEC_UPD | |
{85025851-a784-46d8-950d-05cb3ca43a13} | IA64 | Visual Studio 2005 | SP1_ATL_SEC_UPD |
MSVC++ 9.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{ff66e9f6-83e7-3a3e-af14-8de9a809a6a4} | x86 | Visual Studio 2008 | ||
{350aa351-21fa-3270-8b7a-835434e766ad} | x64 | Visual Studio 2008 | ||
{2b547b43-db50-3139-9ebe-37d419e0f5fa} | IA64 | Visual Studio 2008 | ||
{6e815eb9-6cce-9a53-884e-7857c57002f0} | x86 | Visual Studio 2008 | 9.0.30729.5677 | |
{67d6ecf5-cd5f-ba73-2b8b-22bac8de1b4d} | x64 | Visual Studio 2008 | 9.0.30729.5677 | |
{9a25302d-30c0-39d9-bd6f-21e6ec160475} | x86 | Visual Studio 2008 | 9.0.30729.6161 | SP1 |
{8220eefe-38cd-377e-8595-13398d740ace} | x64 | Visual Studio 2008 | 9.0.30729.6161 | SP1 |
{5827ece1-aeb0-328e-b813-6fc68622c1f9} | IA64 | Visual Studio 2008 | 9.0.30729.6161 | SP1 |
{1f1c2dfc-2d24-3e06-bcb8-725134adf989} | x86 | Visual Studio 2008 | 9.0.30729.6161 | SP1_ATL_SEC_UPD |
{4b6c7001-c7d6-3710-913e-5bc23fce91e6} | x64 | Visual Studio 2008 | 9.0.30729.6161 | SP1_ATL_SEC_UPD |
{977ad349-c2a8-39dd-9273-285c08987c7b} | IA64 | Visual Studio 2008 | 9.0.30729.6161 | SP1_ATL_SEC_UPD |
{9be518e6-ecc6-35a9-88e4-87755c07200f} | x86 | Visual Studio 2008 | 9.0.30729.6161 | SP1_MFC_SEC_UPD |
{5fce6d76-f5dc-37ab-b2b8-22ab8cedb1d4} | x64 | Visual Studio 2008 | 9.0.30729.6161 | SP1_MFC_SEC_UPD |
{515643d1-4e9e-342f-a75a-d1f16448dc04} | IA64 | Visual Studio 2008 | 9.0.30729.6161 | SP1_MFC_SEC_UPD |
MSVC++ 10.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{196bb40d-1578-3d01-b289-befc77a11a1e} | x86 | Visual Studio 2010 | ||
{da5e371c-6333-3d8a-93a4-6fd5b20bcc6e} | x64 | Visual Studio 2010 | ||
{c1a35166-4301-38e9-ba67-02823ad72a1b} | IA64 | Visual Studio 2010 | ||
{f0c3e5d1-1ade-321e-8167-68ef0de699a5} | x86 | Visual Studio 2010 | 10.0.40219 | SP1 |
{1d8e6291-b0d5-35ec-8441-6616f567a0f7} | x64 | Visual Studio 2010 | 10.0.40219 | SP1 |
{88c73c1c-2de5-3b01-afb8-b46ef4ab41cd} | IA64 | Visual Studio 2010 | 10.0.40219 | SP1 |
{1d5e3c0f-eda1-e123-1876-86fed06e995a} | x86 | Visual Studio 2010 | 10.0.40219.325 | |
{1926e8d1-5d0b-ce53-4814-66615f760a7f} | x64 | Visual Studio 2010 | 10.0.40219.325 |
MSVC++ 11.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{33d1fd90-4274-48a1-9bc1-97e33d9c2d6f} | x86 | Visual Studio 2012 | 11.0.61030.0 | |
{ca67548a-5ebe-413a-b50c-4b9ceb6d66c6} | x64 | Visual Studio 2012 | 11.0.61030.0 | |
{bd95a8cd-1d9f-35ad-981a-3e7925026ebb} | x86 | Visual Studio 2012 | 11.0.61030.0 | Minimum runtime (Update 4) |
{cf2bea3c-26ea-32f8-aa9b-331f7e34ba97} | x64 | Visual Studio 2012 | 11.0.61030.0 | Minimum runtime (Update 4) |
{b175520c-86a2-35a7-8619-86dc379688b9} | x86 | Visual Studio 2012 | 11.0.61030.0 | Additional runtime (Update 4) |
{37b8f9c7-03fb-3253-8781-2517c99d7c00} | x64 | Visual Studio 2012 | 11.0.61030.0 | Additional runtime (Update 4) |
MSVC++ 12.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{f65db027-aff3-4070-886a-0d87064aabb1} | x86 | Visual Studio 2013 | 12.0.30501 | |
{050d4fc8-5d48-4b8f-8972-47c82c46020f} | x64 | Visual Studio 2013 | 12.0.30501 | |
{13a4ee12-23ea-3371-91ee-efb36ddfff3e} | x86 | Visual Studio 2013 | 12.0.30501 | Minimum runtime |
{a749d8e6-b613-3be3-8f5f-045c84eba29b} | x64 | Visual Studio 2013 | 12.0.30501 | Minimum runtime |
{f8cfeb22-a2e7-3971-9eda-4b11edefc185} | x86 | Visual Studio 2013 | 12.0.30501 | Additional runtime |
{929fbd26-9020-399b-9a7a-751d61f0b942} | x64 | Visual Studio 2013 | 12.0.30501 | Additional runtime |
MSVC++ 14.0
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{74d0e5db-b326-4dae-a6b2-445b9de1836e} | x86 | Visual Studio 2015 | 14.0.23026 | |
{e46eca4f-393b-40df-9f49-076faf788d83} | x64 | Visual Studio 2015 | 14.0.23026 | |
{a2563e55-3bec-3828-8d67-e5e8b9e8b675} | x86 | Visual Studio 2015 | 14.0.23026 | Minimum runtime |
{0d3e9e15-de7a-300b-96f1-b4af12b96488} | x64 | Visual Studio 2015 | 14.0.23026 | Minimum runtime |
{be960c1c-7bad-3de6-8b1a-2616fe532845} | x86 | Visual Studio 2015 | 14.0.23026 | Additional runtime |
{bc958bd2-5dac-3862-bb1a-c1be0790438d} | x64 | Visual Studio 2015 | 14.0.23026 | Additional runtime |
{2e085fd2-a3e4-4b39-8e10-6b8d35f55244} | x86 | Visual Studio 2015 | 14.0.23918.0 | |
{dab68466-3a7d-41a8-a5cf-415e3ff8ef71} | x64 | Visual Studio 2015 | 14.0.23918.0 | |
{8fd71e98-ee44-3844-9dad-9cb0bbbc603c} | x86 | Visual Studio 2015 | 14.0.24210 | |
{c0b2c673-ecaa-372d-94e5-e89440d087ad} | x64 | Visual Studio 2015 | 14.0.24210 | |
{bbf2ac74-720c-3cb3-8291-5e34039232fa} | x86 | Visual Studio 2015 | 14.0.24215 | Minimum runtime |
{50a2bc33-c9cd-3bf1-a8ff-53c10a0b183c} | x64 | Visual Studio 2015 | 14.0.24215 | Minimum runtime |
{c956892e-d1f3-3781-935c-8d9060e7cd7e} | x86 | Visual Studio 2015 | 14.0.24215 | Debug runtime |
{406cc721-9fad-3610-b44e-3130f84358d8} | x64 | Visual Studio 2015 | 14.0.24215 | Debug runtime |
{69bce4ac-9572-3271-a2fb-9423bda36a43} | x86 | Visual Studio 2015 | 14.0.24215 | Additional runtime |
{ef1ec6a9-17de-3da9-b040-686a1e8a8b04} | x64 | Visual Studio 2015 | 14.0.24215 | Additional runtime |
{e2803110-78b3-4664-a479-3611a381656a} | x86 | Visual Studio 2015 | 14.0.24215.1 | |
{d992c12e-cab2-426f-bde3-fb8c53950b0d} | x64 | Visual Studio 2015 | 14.0.24215.1 |
MSVC++ 14.1
)Product Guid | Architecture | Major Release | Version | Notes |
---|---|---|---|---|
{7d9c81d7-a921-4503-8518-38fc0c94b692} | x86 | Visual Studio 2017 | 14.10.24629.0-rc1 | |
{c60f2e5a-912d-426c-a6b1-8a80bebab424} | x64 | Visual Studio 2017 | 14.10.24629.0-rc1 | |
{27b6eb53-cb9c-3461-b05d-eb5210eba3d4} | x86 | Visual Studio 2017 | 14.10.24629 | Minimum runtime |
{c8086b63-c436-3f8b-8064-ce8f27815c5f} | x64 | Visual Studio 2017 | 14.10.24629 | Minimum runtime |
{44ec2ae5-f313-3e2a-8167-9923138ed5b4} | x86 | Visual Studio 2017 | 14.10.24629 | Additional runtime |
{adc1b84a-d61d-3b2f-854a-8f872e51bb65} | x64 | Visual Studio 2017 | 14.10.24629 | Additional runtime |
{c64e9a20-df31-4b11-ada1-00909eb1b508} | x86 | Visual Studio 2017 | 14.10.24911-rc5 | |
{0a898fd4-a90b-46e2-8f20-46ddb3f24b6e} | x64 | Visual Studio 2017 | 14.10.24911-rc5 | |
{0c1c3f23-69c2-3d3d-9865-f8b6215289cd} | x86 | Visual Studio 2017 | 14.10.24911-rc5 | Minimum runtime |
{f0793c5b-0227-3294-91de-0385602c6cbc} | x64 | Visual Studio 2017 | 14.10.24911-rc5 | Minimum runtime |
{568be2f1-a2b2-3705-bf3e-8e6197382a46} | x86 | Visual Studio 2017 | 14.10.24911-rc5 | Additional runtime |
{e9a123f9-306e-3a29-88b9-5cd521d9109d} | x64 | Visual Studio 2017 | 14.10.24911-rc5 | Additional runtime |
{3e053c90-8e3b-4a1b-ab2e-afb57d20f4b0} | x86 | Visual Studio 2017 | 14.10.24930-rc6 | |
{20b93b94-495d-4022-a84f-f598998991bf} | x64 | Visual Studio 2017 | 14.10.24930-rc6 | |
{984d10be-0781-3a9d-80fb-03540e0c3b42} | x86 | Visual Studio 2017 | 14.10.24930-rc6 | Minimum runtime |
{9f50d497-02c0-3bbb-9103-bfe6204fa318} | x64 | Visual Studio 2017 | 14.10.24930-rc6 | Minimum runtime |
{9aaeb713-d24d-37a4-8fbc-7a24739d3156} | x86 | Visual Studio 2017 | 14.10.24930-rc6 | Additional runtime |
{a8755ee8-ad62-37fe-b106-243dc209cf52} | x64 | Visual Studio 2017 | 14.10.24930-rc6 | Additional runtime |
{c239cea1-d49e-4e16-8e87-8c055765f7ec} | x86 | Visual Studio 2017 | 14.10.25008-rtm | |
{f1e7e313-06df-4c56-96a9-99fdfd149c51} | x64 | Visual Studio 2017 | 14.10.25008-rtm | |
{c6cda568-cd91-3ca0-9ede-dad98a13d6e1} | x86 | Visual Studio 2017 | 14.10.25008-rtm | Minimum runtime |
{8d50d8c6-1e3d-3bab-b2b7-a5399ea1ebd1} | x64 | Visual Studio 2017 | 14.10.25008-rtm | Minimum runtime |
{2f8a908c-0ccd-3bdd-9212-dc6696525139} | x86 | Visual Studio 2017 | 14.10.25008-rtm | Debug runtime |
{b0763af1-2b66-33b7-b6af-78e123aea826} | x64 | Visual Studio 2017 | 14.10.25008-rtm | Debug runtime |
{e6222d59-608c-3018-b86b-69bd241acde5} | x86 | Visual Studio 2017 | 14.10.25008-rtm | Additional runtime |
{c668f044-4825-330d-8f9f-3cbfc9f2ab89} | x64 | Visual Studio 2017 | 14.10.25008-rtm | Additional runtime |
{404c9c27-8377-4fd1-b607-7ca635db4e49} | x86 | Visual Studio 2017 | 14.11.25325 | |
{6c6356fe-cbfa-4944-9bed-a9e99f45cb7a} | x64 | Visual Studio 2017 | 14.11.25325 | |
{029da848-1a80-34d3-bfc1-a6447bfc8e7f} | x86 | Visual Studio 2017 | 14.11.25325 | Minimum runtime |
{b0037450-526d-3448-a370-cacbd87769a0} | x64 | Visual Studio 2017 | 14.11.25325 | Minimum runtime |
{568cd07e-0824-3eeb-aec1-8fd51f3c85cf} | x86 | Visual Studio 2017 | 14.11.25325 | Additional runtime |
{b13b3e11-1555-353f-a63a-8933ee104fbd} | x64 | Visual Studio 2017 | 14.11.25325 | Additional runtime |
{e2ee15e2-a480-4bc5-bfb7-e9803d1d9823} | x64 | Visual Studio 2017 | 14.12.25810 | |
{56e11d69-7cc9-40a5-a4f9-8f6190c4d84d} | x86 | Visual Studio 2017 | 14.12.25810 | |
{2cd849a7-86a1-34a6-b8f9-d72f5b21a9ae} | x64 | Visual Studio 2017 | 14.12.25810 | Additional Runtime |
{7fed75a1-600c-394b-8376-712e2a8861f2} | x86 | Visual Studio 2017 | 14.12.25810 | Additional Runtime |
{c99e2adc-0347-336e-a603-f1992b09d582} | x64 | Visual Studio 2017 | 14.12.25810 | Minimum runtime |
{828952eb-5572-3666-8ca9-000b6ce79350} | x86 | Visual Studio 2017 | 14.12.25810 | Minimum runtime |
{03EBF679-E886-38AD-8E70-28658449F7F9} | x64 | Visual Studio 2017 | 14.14.26429 | Minimum Runtime |
{7753EC39-3039-3629-98BE-447C5D869C09} | x86 | Visual Studio 2017 | 14.14.26429 | Minimum Runtime |
{B12F584A-DE7A-3EE3-8EC4-8A64DBC0F2A7} | x64 | Visual Studio 2017 | 14.14.26429 | Additional Runtime |
{6F0267F3-7467-350D-A8C8-33B72E3658D8} | x86 | Visual Studio 2017 | 14.14.26429 | Additional Runtime |