我正在编写一个perl脚本,以检查系统中是否已安装Visual C ++ Redistributable 2010 x64。
,我遇到了两种方法读取相应条目的注册表。
或使用MsiQueryProductStateA
根据每个设置,不可能使用Win32::TieRegistry
。
但可以选择使用use Win32::API
尝试将MsiQueryProductStateA
与Win32::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
有人可以说明如何使用/导入返回类型以及如何使用它吗?
预先感谢
答案 0 :(得分:0)
显示您可以参考的C ++(而不是perl)中的实现方法。
我安装了Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019。
返回值5表示“ The product is installed for the current user.”
在注册表中查找产品代码,如下所示:
HKEY_CLASSES_ROOT \ Installer \ Dependencies \ Microsoft.VS.VC_RuntimeAdditionalVSU_x86,v14