我正在创建一个应用程序,该应用程序应该在涉及许多查询过程的不同Windows操作系统版本上准确检索所有软件和修补程序更新。具体的一种方法是查询Win32_QuickFixEngineering类。现在使用以下C#代码,我能够这样做:
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_QuickFixEngineering");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_QuickFixEngineering instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("HotFixID: {0}", queryObj["HotFixID"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
我得到了一系列与以下内容相同的结果:
HotfixID='File 1'
HotfixID='File 1'
HotfixID='File 1'
HotfixID='File 1'
HotfixID='File 1'
HotfixID='File 1'
HotfixID='File 1'
但是当我查询属性'ServicePackInEffect'时,每个带有HotfixID ='File 1'的查询都显示如下:
ServicePackInEffect='KB2259213'
ServicePackInEffect='KB2431232'
ServicePackInEffect='KB2254332-IE7'
ServicePackInEffect='KB960680-v2'
ServicePackInEffect='KB2254343'
ServicePackInEffect='KB93089483'
所以我的问题是,这些也是更新,还是修补程序?或者是什么?如果是,为什么HotfixID名为'File 1'?为什么他们的'ServicePackInEffect'说出HotfixID应该是什么?
答案 0 :(得分:0)
我有同样的交易。我正在检查是否通过configman安装了修补程序。他们似乎首先在前面运行修补程序,然后跟进常规修补程序等。
答案 1 :(得分:0)
如果您File 1
为HotFixID
,则可以从ServicePackInEffect
列中检索相关标识符。
HotFixID ServicePackInEffect
==================================
KB941569. .
KB898461. SP3.
File 1. KB982665.
... ...
答案 2 :(得分:0)
是的,他们是更新。 ' File1中'表示特定的修补程序ID已被取代。只需跳过' File1' HotFixID&#39(query-SELECT * FROM Win32_QuickFixEngineering,其中HotFixID<>' File1')。
Src:http://www.visualbasicscript.com/File-1-shows-in-HotFix-ID-column-m33401.aspx