|
|
1
6
如果查询“Win32_product” msi安装程序检查并验证每个产品。 知识库文章 http://support.microsoft.com/kb/974524 显示:
因此,请小心使用“Win32_product”。 更新:好文章 https://sdmsoftware.com/group-policy-blog/wmi/why-win32_product-is-bad-news/ |
|
|
2
3
正如你已经注意到的那样,WMI正在抓紧时间。遍历注册表可能会为您带来好处。 你可以看看 Get installed applications in a system 这里是stackoverflow,这里提到了两种方法。 |
|
3
2
正如Bernhard指出的, WMI对Win32_Product的使用会启动程序包属性的完整性检查 ,因此使用起来会很慢-在特殊情况下,它会触发MSI自我修复(我从未在我的机器上看到过这种情况)。 您可以使用 MSI自动化接口 直接枚举通过计算机上的Windows安装程序包(MSI文件)安装的应用程序。这非常快速,根本不涉及WMI。 参见此示例 : how to find out which products are installed - newer product are already installed MSI windows ( 完整但基本且易于理解的VBScript示例-请查看 ). 您可以为每个产品检索许多财产,请参阅 MSDN documentation for the MSI automation interface 。我希望链接的VBScript示例代码和MSDN文档可以帮助您快速入门。 P.S:我知道这是一个老问题,但这个问题不断出现(特别是WMI的缓慢)——仅供将来参考。 |
|
|
4
2
如上所述 here 注册表不可靠,WMI速度慢。因此,对我来说,最好的选择是使用Windows Installer API。将msi.dll添加到引用中,然后根据需要调整以下代码:
|
|
|
5
1
你应该使用
|
|
|
6
0
Powershell 5.1改为“get package”。
|
|
|
jack · Powershell如何注册网络连接丢失事件? 9 年前 |
|
|
Steve Hobbs · 插入XML的空格 10 年前 |
|
|
Zev Spitz · 使用WMI读取自动化类型信息 11 年前 |