Comment puis-je interroger pour une précise et liste localisée des mises à jour de Windows installé sur une machine utilisant C#?requête pour la liste précise et localisée des mises à jour Windows installés
Je définis précise comme correspondant à ce qui est affiché dans la catégorie de vue de Microsoft boîte de dialogue Mises à jour installées « Microsoft Windows » sous Programmes et fonctionnalités dans Windows 7.
Si je WUAPI.DLL, l'information est retourné localisé mais je ne peux pas obtenir une liste précise. Dans le cas de WUAPI.DLL, certains correctifs sont manquants et si une mise à jour a été désinstallée, il apparaît toujours dans la liste générée par le code suivant:
public static void GetWindowsUpdates()
{
var updateSession = new UpdateSession();
var updateSearcher = updateSession.CreateUpdateSearcher();
var count = updateSearcher.GetTotalHistoryCount();
if (count == 0)
return;
var history = updateSearcher.QueryHistory(0, count);
for (int i = 0; i < count; i++)
{
if (history[i].ResultCode == OperationResultCode.orcSucceeded)
{
Console.WriteLine(history[i].Title);
if (history[i].Operation == UpdateOperation.uoUninstallation)
{
Console.WriteLine("!!! Operation == uninstall"); // This is never true
}
}
}
}
La méthode de recherche Wuapi n'a pas non plus fournir une liste précise en utilisant le code suivant:
WUApiLib.UpdateSessionClass session = new WUApiLib.UpdateSessionClass();
WUApiLib.IUpdateSearcher searcher = session.CreateUpdateSearcher();
searcher.IncludePotentiallySupersededUpdates = true;
WUApiLib.ISearchResult result = searcher.Search("IsInstalled=1");
Console.WriteLine("Updates found: " + result.Updates.Count);
foreach (IUpdate item in result.Updates)
{
Console.WriteLine(item.Title);
}
Si j'utilise WMI pour lire la liste des mises à jour, je peux obtenir une liste précise, mais il est pas localisé. J'utilise le code suivant:
ManagementObjectSearcher searcher = new ManagementObjectSearcher(new ObjectQuery("select * from Win32_QuickFixEngineering"));
searcher.Options.UseAmendedQualifiers = true;
searcher.Scope.Options.Locale = "MS_" + CultureInfo.CurrentCulture.LCID.ToString("X");
ManagementObjectCollection results = searcher.Get();
Console.WriteLine("\n==WMI==" + results.Count);
foreach (ManagementObject item in results)
{
Console.WriteLine("\t--Properties--");
foreach (var x in item.Properties)
{
Console.WriteLine(x.Name + ": " + item[x.Name]);
}
Console.WriteLine("\t--System Properties--");
foreach (var x in item.SystemProperties)
{
Console.WriteLine(x.Name + ": " + x.Value);
}
Console.WriteLine("\t--Qualifiers--");
foreach (var x in item.Qualifiers)
{
Console.WriteLine(x.Name + ": " + x.Value);
}
}
Nous sommes confrontés aux mêmes problèmes tout en essayant d'obtenir toutes les mises à jour. Comment avez-vous résolu ce problème? Pouvez-vous s'il vous plaît partager le code si possible? –
Existe-t-il une documentation sur msdn à propos de "Le WUApi enregistre uniquement les actions effectuées via le WUApi"? –