前言
判断VC是否安装有两种方式
- 通过软件的GUID判断,这种方式比较准确,但需要知道程序的GUID,推荐使用。
- 通过注册表中卸载程序的名称判断,这种方式并不太可靠。
下载地址
通过GUID方式
返回值
值 | 含义 |
---|---|
INSTALLSTATE_ABSENT | 已为另一用户安装该产品。 |
INSTALLSTATE_ADVERTISED | 该产品已播发,但未安装。 |
INSTALLSTATE_DEFAULT | 已为当前用户安装该产品。 |
INSTALLSTATE_INVALIDARG | 向该函数传递了无效参数。 |
INSTALLSTATE_UNKNOWN | 该产品既未播发,也未安装。 |
工具类
1 | // ReSharper disable InconsistentNaming |
调用
1 | var installstate = ZvcInstallCheckUtils.IsInstall("{1D8E6291-B0D5-35EC-8441-6616F567A0F7}"); |
VC的GUID
1 | Visual C++ 2005 Redistributable Package (x86) |
通过注册表方式
这种方式并不能准确找到,测试的时候我查找2010 x86可以找到,但是2010 x64的却找不到。
1 | namespace env_monitor.Utils |
注意这里之所以使用数组来过滤是因为微软的名称命名也太不规范了。
比如"Microsoft Visual C++ 2010 x86 Redistributable - 10.0.40219"
,2010和x86之间竟然是2个空格,所以使用数组来判断,不但包含2010,而且包含x86才算匹配上。
测试
1 | var isInstall = ZvcInstallCheckByRegUtils.IsInstallVc( |