ver qfe parches listar instalados instaladas desde comando buscar actualizaciones c# .net windows list

c# - qfe - listar updates instalados windows



¿Cómo obtengo una lista de actualizaciones instaladas y revisiones? (5)

Una lista de todas las actualizaciones y revisiones que se han instalado en mi computadora, provenientes de Microsoft Windows Update o de la base de conocimientos. Necesito el ID de cada uno en forma de KBxxxxxx o alguna representación similar ...

Actualmente tengo:

const string query = "SELECT HotFixID FROM Win32_QuickFixEngineering"; var search = new ManagementObjectSearcher(query); var collection = search.Get(); foreach (ManagementObject quickFix in collection) Console.WriteLine(quickFix["HotFixID"].ToString());

Pero esto no parece enumerar todo, solo enumera QFE.

Lo necesito para trabajar en Windows XP, Vista y 7.


Después de una búsqueda más en lo que he encontrado antes. (Sí, lo mismo que VolkerK sugiere primero)

  1. Bajo VS2008 CMD en% SystemRoot% / System32 / ejecute un comando para obtener una dll administrada:
    tlbimp.exe wuapi.dll /out=WUApiInterop.dll
  2. Agregue WUApiInterop.dll como referencia del proyecto para que veamos las funciones.

Usando el siguiente código, puedo obtener una lista de la que puedo extraer los números de KB:

var updateSession = new UpdateSession(); var updateSearcher = updateSession.CreateUpdateSearcher(); var count = updateSearcher.GetTotalHistoryCount(); var history = updateSearcher.QueryHistory(0, count); for (int i = 0; i < count; ++i) Console.WriteLine(history[i].Title);


En caso de que solo desee la lista de actualizaciones y no le importe si la obtiene a través de un código o una GUI, a continuación le indicamos cómo hacerlo en Powershell:

  1. Abrir PowerShell (preferiblemente "ejecutar como administrador")
  2. Escribe "get-hotfix" y pulsa enter. Eso es.

Puede utilizar IUpdateSession3 :: QueryHistory Method .
Las propiedades de las entradas devueltas se describen en http://msdn.microsoft.com/en-us/library/aa386400(VS.85).aspx

Set updateSearch = CreateObject("Microsoft.Update.Session").CreateUpdateSearcher Set updateHistory = updateSearch.QueryHistory(1, updateSearch.GetTotalHistoryCount) For Each updateEntry in updateHistory Wscript.Echo "Title: " & updateEntry.Title Wscript.Echo "application ID: " & updateEntry.ClientApplicationID Wscript.Echo " --" Next

edición: también eche un vistazo a http://msdn.microsoft.com/en-us/library/aa387287%28VS.85%29.aspx


const string querys = "SELECT HotFixID FROM Win32_QuickFixEngineering"; var search = new ManagementObjectSearcher(querys); var collection = search.Get(); foreach (ManagementObject quickfix in collection) { hotfix = quickfix["HotFixID"].ToString(); } listBox1.Items.Add(hotfix);

Esto llenará el cuadro de lista con las revisiones o actualizaciones instaladas actualmente

Si desea enumerar todo el historial de actualizaciones y revisiones que se mostrarán, el ejemplo anterior de Tom Wijsman como se indica funcionará


string ExtractString(string s) { // You should check for errors in real-world code, omitted for brevity try { var startTag = "("; int startIndex = s.IndexOf(startTag) + startTag.Length; int endIndex = s.IndexOf(")", startIndex); return s.Substring(startIndex, endIndex - startIndex); } catch { return ("CNVFL"); } }

Arriba hay un método simple de extracción de cadenas que utilizo para encontrar que KB está en el paquete de seguridad como Tom Wijsman mencionó y ejecutó.

var updateSession = new UpdateSession(); var updateSearcher = updateSession.CreateUpdateSearcher(); var count = updateSearcher.GetTotalHistoryCount(); var history = updateSearcher.QueryHistory(0, count); for (int i = 0; i < count; ++i){ //sets KB here!! string _splitstring = ExtractString(history[i].Title); Console.WriteLine(_splitstring); }

esto te daría el número de KB como el que estás buscando, creo