如何检测是否安装了Visual C++ 2017 Redistributable

Man*_*ath 10 redistributable visual-c++ vcredist visual-c++-2015 visual-c++-2017

随着Microsoft在其最新版本中更改注册表项的模式,我如何检测是否在计算机上安装了Visual C++ 2017 Redistributable?

我的目标是安装VC++ 2015Redist,因为该软件是使用VS2015编写的.如果我能在一台机器上成功检测到VC++ 2017Redist,那么我跳过安装VC++ 2015Redist

CJB*_*JBS 12

2017 VC++ Redistributable安装升级/替换2015安装

安装Visual Studio 2017 Redistributables升级并替换2015 Redistributables的任何现有安装.我检查过这个,2015安装从"添加/删除程序"中消失,注册表值(见下文)更新了版本号.此外,根据MSDN,2017 VC++ Redistributables 与2015版本具有二进制兼容性.

通过检查下面描述的注册表项,可以检查是否安装了2015或2017.这适用于x64系统,看看没有Wow6432Node32位系统.

键:

对于64位VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64
Run Code Online (Sandbox Code Playgroud)

对于32位VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86
Run Code Online (Sandbox Code Playgroud)

32位和64位安装的属性和值相同(格式相同).注册表使用价值:

Value          2015       2017 
Name      Val. Data  Val. Data
--------  ---------  ---------
Major            14         14
Minor             0         13
Bld           23026      26020
Run Code Online (Sandbox Code Playgroud)

请注意,随着新补丁的更新,2017年的@Minor和build(@Bld)数量会继续变化.

我建议,如果检查安装2015的最小值,只需检查密钥并且@Major版本是14.

如果检查2017年,如果它不存在则打算进行升级,那么只需检查@Bld编号,如果它不是至少可以安装的版本,那么请继续安装当前的2017版本.请注意,未来更新@Minor和@Bld版本很可能 - 我有另一台安装了v14.11.25325的计算机,也是2017版本.

  • 请注意,从VC ++ 2015升级时,实际上在VC ++ 2017 redist安装程序系列中存在一个错误,实际上*删除了该密钥。当这种情况发生时,我无法找到可靠的方法来检测VC ++ 2017安装。 (3认同)

Mai*_*los 8

VC 可再发行组件现已加入VisualStudio 2015-2019。如果您尝试安装“较旧的”版本(例如仅 2015 年),并且您有任何更新的版本(例如 2017 年),则会出现错误(本回复结束)。

正如@CJBS 所写,它会将自己写入注册表,但遗憾的是我注意到了另一个记录位置(因此也请检查一下):

对于 32 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86

对于 64 位 VC++ Redistributable

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64

我建议阅读@Bld DWord 记录并进行比较以确定您是否需要更新的版本:2015 (Bld = 23026) 2017 (Bld = 26020) 2019 (Bld = 27820)


错误消息图像:0x80070666 - 已安装此产品的另一个版本。无法继续安装此版本...


MSa*_*ers -4

你正在解决错误的问题。您正在尝试安装仅适用于 VS2015 (Toolset v140) 的过时的可再发行组件。相反,安装当前的 VS2017 可再发行组件 (Toolset v141)。它向后兼容 VS2015。

  • 当机器已经安装了 VS2345 可再发行组件时,这也很可能会失败,因此 OP 将处于与现在相同的情况(除非他在 MS 发布日使用最新的可再发行安装程序重新打包其应用程序)。 (2认同)
  • (就我而言,“被设计破坏”是我可以轻松接受 MS 技术的东西,所以对我来说并不奇怪:)) (2认同)