私は似たような状況で遊んでてきたと@KMorazの答えはほとんど右であることが判明:以下は、更新がマシンに適用されている場合はtrueを返します。 (注:@KMoraz、私はこれをコメントとして残していますが、まだ担当者がいません!)
Microsoft.Deployment.WindowsInstaller
名前空間が移動する方法のようですが、製品コードによるフィルタリングはあまりにも厳しいかもしれません。パッチがマシンにインストールされていて、製品コード{F5B09CFD-F0B2-36AF-8DF4-1DF6B63FC7B4}
または{8E34682C-8118-31F1-BC4C-98CD9675E1C2}
と関連付けられていない問題が発生しました。
代わりにPatchInstallation.AllPatches
を使用しました。これは、システムにインストールされているパッチのフィルタリングされていないリストを返し、linqを使って答えを探します。
public static bool CheckForPatch()
{
return IsPatchAlreadyInstalled("KB2468871")
}
public static bool IsPatchAlreadyInstalled(string patchCode)
{
var patches = PatchInstallation.AllPatches.ToList();
patches.ForEach(x => Console.WriteLine("--found patch {0} for {1}",x.DisplayName,x.ProductCode));
return patches.Any(patch => patch.DisplayName == patchCode);
}
出力例:
--found patch Microsoft Office 2010 Service Pack 1 (SP1) for {90140000-001F-0409-0000-0000000FF1CE}
--found patch Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition for {90140000-001F-0409-0000-0000000FF1CE}
--found patch Microsoft Office 2010 Service Pack 1 (SP1) for {90140000-001F-0C0A-0000-0000000FF1CE}
--found patch Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition for {90140000-001F-0C0A-0000-0000000FF1CE}
--found patch Microsoft Office 2010 Service Pack 1 (SP1) for {90140000-001F-040C-0000-0000000FF1CE}
--found patch Update for Microsoft Office 2010 (KB2553270) 32-Bit Edition for {90140000-001F-040C-0000-0000000FF1CE}
--found patch KB2533523 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2518870 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2656351 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2633870 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2468871 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2572078 for {3C3901C5-3455-3E0A-A214-0B093A5070A6}
--found patch KB2533523 for {0A0CADCF-78DA-33C4-A350-CD51849B9702}
--found patch KB2656351 for {0A0CADCF-78DA-33C4-A350-CD51849B9702}
--found patch KB2468871 for {0A0CADCF-78DA-33C4-A350-CD51849B9702}
--found patch KB2487367 for {0A0CADCF-78DA-33C4-A350-CD51849B9702}
このアプローチを検証しています。あなたの答えをありがとう! –