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"]);
}
Consulte la clase Win32_Product WMI (Windows Management Instrumentation). Aquí hay un tutorial sobre el uso de WMI en Python.
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.
Si se refiere a la lista de aplicaciones instaladas que se muestra en Agregar / Eliminar programas en el panel de control, puede encontrarla en la clave de registro:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Uninstall
se puede encontrar más información sobre cómo se estructura el árbol de registro aquí .
Necesita usar la API winreg en python para leer los valores del registro.