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
安装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 可再发行组件现已加入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。