我正在开发一个 Linux 审计应用程序,除其他外,它必须从 Windows 机器上检索已安装的软件和许可证。应用程序必须是无代理的。wmi-client 实际上确实实现了我想要的,我尝试查询应用程序,它工作得很好:
# LAUNCHING WMIC PLUGIN
my $cmd = "wmic -U ".$username."%".$password." //".$hostname." \"select Name, Version from Win32_Product\"";
my $output = `$cmd`;
print "INSTALLED SOFTWARE:\n";
print "$output";
现在我的问题是,如何检索某些应用程序的产品密钥?我知道有时它们存储在注册表项中,我可以通过 WMI 查询它们吗?
编辑:刚刚在一个网站上发现:
WQL 查询基于某些提供一组属性的 WMI 类。相反,WMI 注册表操作基于“默认”命名空间中的“StdRegProv”,并且必须调用某些方法才能获得结果。这意味着注册表查询基于 WMI 过滤器是不可能的。
所以看起来 WQL 无法询问注册表项,那我该怎么办?有任何想法吗?