首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取已安装应用程序的列表

获取已安装应用程序的列表
EN

Stack Overflow用户
提问于 2011-11-13 02:12:22
回答 2查看 1.3K关注 0票数 1

我正在尝试建立一个已安装应用程序的列表,类似于控制面板中“添加/删除程序”列表中的列表。

我尝试过使用Win32_Product WMI ClassMsiEnumProducts。这两个程序的输出非常相似,但都缺少“添加/删除程序”中的程序。例如,我知道我安装了Adobe Flash Player,但它不在这两个列表中。

我一直在努力避免读取注册表,因为我读到过使用一些API来检索列表更好,但到目前为止我发现的方法都不起作用。

有没有其他内置的API/COM方法可以工作?或者我应该尝试从注册表中读取所有内容?

还有..。

注册表中的某些程序不在“添加/删除程序”列表中,例如,我安装了Microsoft Security Essentials。在注册表中有一个卸载Microsoft Antimalware的条目,我假设它是Microsoft Security Essentials的一部分,但它不在添加/删除程序列表中,并且我没有看到任何类型的do- not -display值。(我想使用某种API的部分原因)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-13 10:41:17

弄清楚了,SystemComponent值将它从添加/删除程序列表中隐藏起来。

由于我找不到任何其他的API可用,所以我只打算枚举注册表。

票数 0
EN

Stack Overflow用户

发布于 2011-11-14 00:36:04

如果您想显示与“程序和功能”列表中相同的项目,只需绑定到该文件夹并请求其内容即可。以下是脚本版本:

代码语言:javascript
复制
var shell = new ActiveXObject("Shell.Application");
var programsFolder = shell.Namespace("::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}");
var items = programsFolder.Items();
for (var i = 0; i < items.Count; i++) {
 var item = items.Item(i);
 WScript.StdOut.WriteLine(item);
}

C++版本包含了更多的类型,但思想是相同的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8106478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档