为何Windows 7 SP1中特定SoftwareLicensingProduct的WMI查询无结果?
Windows 7 SP1与Windows 10 WMI查询差异原因分析
问题现象
在Windows 7 SP1系统中使用wbemtest执行以下WMI查询时无返回结果:
SELECT LicenseStatus FROM SoftwareLicensingProduct WHERE ApplicationId = '55c92734-d682-4d71-983e-d6ec3f16059f' AND PartialProductKey IS NOT NULL AND LicenseIsAddon = FALSE
但将LicenseIsAddon字段加入SELECT子句后,该查询可正常返回一条结果:
SELECT LicenseStatus, LicenseIsAddon FROM SoftwareLicensingProduct WHERE ApplicationId = '55c92734-d682-4d71-983e-d6ec3f16059f' AND PartialProductKey IS NOT NULL AND LicenseIsAddon = FALSE
而在Windows 10系统中,上述两种查询均能正常运行。
差异原因
这个差异是Windows 7 SP1的SoftwareLicensingProduct WMI提供程序存在的查询优化缺陷导致的:
- 当WHERE子句中使用
LicenseIsAddon = FALSE作为过滤条件,但SELECT子句未包含LicenseIsAddon字段时,WMI提供程序无法正确处理该过滤逻辑,错误地过滤掉了本该匹配的条目,最终返回空结果。 - 当SELECT子句包含
LicenseIsAddon字段时,提供程序会正确读取该字段的值并执行过滤,因此能返回符合条件的结果。 - Windows 10对该WMI提供程序进行了修复,修正了这个查询处理的逻辑漏洞,所以两种查询写法都能正常执行并返回结果。
内容的提问来源于stack exchange,提问作者Chris Yungmann
相关产品推荐
相关产品推荐

