当前位置:  开发笔记 > 编程语言 > 正文

如何在Windows XP中枚举/列出所有已安装的应用程序?

如何解决《如何在WindowsXP中枚举/列出所有已安装的应用程序?》经验,为你挑选了5个好方法。

当我说"已安装的应用程序"时,我基本上是指在[控制面板] - > [添加/删除程序]中可见的任何应用程序.

我更喜欢用Python做,但C或C++也没关系.



1> Aziz..:

如果您指的是控制面板中"添加\删除程序"中显示的已安装应用程序列表,则可以在注册表项中找到它:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

有关如何构建注册表树的更多信息,请访问此处.

您需要在python中使用winreg API来读取注册表中的值.



2> Tamas Czineg..:

查看Win32_Product WMI(Windows Management Instrumentation)类.这是一个在Python中使用WMI 的教程.


但是有一些警告.某些PC上可以禁用WMI.此外,它不会列出"控制面板"小程序中可见的所有应用程序 - 仅列出由兼容安装程序安装的应用程序.

3> 小智..:

控制面板使用Win32 COM api,这是官方方法(请参阅Google Groups,Win32)
从不依赖注册表.


很晚很多年了,但是因为没有说*使用了哪个*COM API而是-1.一个usenet组很大; 在答案中说"去谷歌"并不够好.

4> John Fouhy..:

Microsoft脚本存储库有一个脚本,用于列出所有已安装的软件.

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



5> PolyTekPatri..:

我见过的最好的基于注册表的实现是Chris Wright(chris128)编写的一种,发布在http://www.vbforums.com/showthread.php?t=598355上。它使用多个注册表项,并且比当前在此处发布的答案要复杂得多。它似乎产生与“添加/删除程序”应用程序相同的结果,并且像ARP应用程序一样,它还提供了包含更新的选项。

尽管它是在VB.NET中实现的,但应该容易转换为其他.NET语言,例如C#或IronPython。我想如果需要的话,首先转换为IronPython应该可以很容易地移植到常规Python,但是我自己将其转换为C#,然后进行了一些清理。

只需指出一个小错误:GetUserInstallerKeyPrograms()不会将用户程序的版本添加到列表中,即使将其解压缩也是如此。这很容易解决。

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有