ver una ultimos todos software script saber programas para los lista las instalados instalado instaladas guardan donde computadora como apps aplicaciones c++ python winapi enumeration

c++ - una - ¿Cómo puedo enumerar/enumerar todas las aplicaciones instaladas en Windows XP?



script para saber software instalado (6)

Cuando digo "aplicación instalada", básicamente me refiero a cualquier aplicación visible en [Panel de control] -> [Agregar o quitar programas].

Preferiría hacerlo en Python, pero C o C ++ también están bien.


C #. Código de red para obtener la lista de software instalado usando WMI en xp y win7 (wmi es la única forma en win7)

WqlObjectQuery wqlQuery = new WqlObjectQuery("SELECT * FROM Win32_Product"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(wqlQuery); foreach (ManagementObject software in searcher.Get()) { Console.WriteLine(software["Caption"]); }



El Repositorio de Microsoft Script tiene una secuencia de comandos para enumerar todo el software instalado .

import win32com.client strComputer = "." objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator") objSWbemServices = objWMIService.ConnectServer(strComputer,"root/cimv2") colItems = objSWbemServices.ExecQuery("Select * from Win32_Product") for objItem in colItems: print "Caption: ", objItem.Caption print "Description: ", objItem.Description print "Identifying Number: ", objItem.IdentifyingNumber print "Install Date: ", objItem.InstallDate print "Install Date 2: ", objItem.InstallDate2 print "Install Location: ", objItem.InstallLocation print "Install State: ", objItem.InstallState print "Name: ", objItem.Name print "Package Cache: ", objItem.PackageCache print "SKU Number: ", objItem.SKUNumber print "Vendor: ", objItem.Vendor print "Version: ", objItem.Version


El Panel de control usa Win32 COM api, que es el método oficial (ver Grupos de Google, Win32)
Nunca confíes en el registro.


La mejor implementación basada en registro que he visto es la escrita por Chris Wright (chris128) publicada en http://www.vbforums.com/showthread.php?t=598355 . Utiliza varias claves de registro y es mucho más complejo que cualquiera de las respuestas publicadas actualmente aquí. Parece producir resultados idénticos a la aplicación Agregar o quitar programas, y al igual que la aplicación ARP, también proporciona una opción para incluir actualizaciones.

Aunque está implementado en VB.NET, debería ser fácil convertirlo a otros lenguajes .NET como C # o IronPython. Imagino que la conversión a IronPython primero debería facilitar bastante el acceso a Python regular si eso es lo que quieres, pero solo lo convertí a C # y luego limpié el código un poco.

Solo un error pequeño para señalar: GetUserInstallerKeyPrograms () no agrega la versión de los programas de usuario a la lista, aunque la extraiga. Esto es fácil de arreglar sin embargo.