检查是否通过perl脚本安装了VC ++ Redistributable 10

时间:2019-05-15 09:20:37

标签: perl winapi visual-c++ registry redistributable

我正在编写一个perl脚本,以检查系统中是否已安装Visual C ++ Redistributable 2010 x64。

根据https://blogs.msdn.microsoft.com/astebner/2010/05/05/mailbag-how-to-detect-the-presence-of-the-visual-c-2010-redistributable-package/

,我遇到了两种方法

读取相应条目的注册表。 或使用MsiQueryProductStateA

根据每个设置,不可能使用Win32::TieRegistry

但可以选择使用use Win32::API

尝试将MsiQueryProductStateAWin32::API一起使用

use Win32::API;
$function = Win32::API::More->Import(
    'msi', 'INSTALLSTATE  MsiQueryProductStateA(LPCSTR szProduct)'
);

应该获得一些有效的返回值,但会出错

Win32::API::parse_prototype: WARNING unknown output parameter type 'INSTALLSTATE' at C:\Program Files\HP\HP BTO Software\nonOV\Perl\a\lib/5.26.2/MSWin32-x64-multi-thread/Win32/API.pm line 600. 4294967294

有人可以说明如何使用/导入返回类型以及如何使用它吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

显示您可以参考的C ++(而不是perl)中的实现方法。

我安装了Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019

enter image description here

enter image description here

返回值5表示“ The product is installed for the current user.

在注册表中查找产品代码,如下所示:

HKEY_CLASSES_ROOT \ Installer \ Dependencies \ Microsoft.VS.VC_RuntimeAdditionalVSU_x86,v14