首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测是否安装了Visual C++ 2017 Redistributable

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

Stack Overflow用户
提问于 2017-09-12 22:04:34
回答 4查看 31K关注 0票数 18

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

我的目标是安装VC++2015Redist,因为该软件是使用VS2015编写的。如果我可以在计算机上成功检测到VC++2017Redist,那么我将跳过VC++2015Redist安装

EN

回答 4

Stack Overflow用户

发布于 2018-04-20 02:26:48

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

安装Visual Studio 2017可再发行组件将升级并替换2015年可再发行组件的任何现有安装。我已经检查过了,2015安装从“添加/删除程序”中消失了,注册表值(见下文)的版本号也更新了。此外,per MSDN,2017 VC++ Redistributable具有与2015版本的Binary Compatibility

可以通过检查下面描述的注册表项来检查是否安装了2015或2017。这是针对x64系统的,看看32位系统中没有Wow6432Node的情况。

密钥:

适用于64位VC++可再发行的

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64

适用于32位VC++可再发行

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x86

对于32位和64位安装,属性和值是相同的(相同的格式)。使用的注册表值:

代码语言:javascript
复制
Value          2015       2017 
Name      Val. Data  Val. Data
--------  ---------  ---------
Major            14         14
Minor             0         13
Bld           23026      26020

请注意,随着新补丁的更新,2017年的@Minor和build (@Bld)编号将继续变化。

我建议,如果检查是否至少安装了2015,只需检查密钥和@重大版本为14即可。

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

票数 21
EN

Stack Overflow用户

发布于 2019-10-03 15:29:47

VC redistributable现在是 for VisualStudio 2015-2019。如果您尝试安装“旧”版本(例如2015),如果您有任何较新的版本(例如2017),则会收到错误(此回复结束)。

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

适用于32位VC++可再发行的

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

适用于64位VC++可再发行

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

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

Error message image:0x80070666 -已安装此产品的另一个版本。无法继续安装此版本...

票数 8
EN

Stack Overflow用户

发布于 2020-12-16 11:13:07

代码语言:javascript
复制
# Check VCRedist current version
$OS= if ( ${env:ProgramFiles(x86)} ) {"\WOW6432Node"} else {"\"}
    $vcredist = Get-ItemProperty -Path "HKLM:\SOFTWARE$OS\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" -ErrorAction SilentlyContinue -ErrorVariable eVcRedist
if ($eVcRedist) {
    $Warning += @( "Abbyy FineReader 15 requires VCRedist." )
}
elseif (($vcredist.Bld -le 24215)) {
    $Warning += @( "Abbyy FineReader 15 requires VCRedist." )
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46178559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档