获取已安装软件列表 - RegistryGetInstalledSoftware
函数简介
获取系统已安装软件列表,返回包含软件信息的JSON数组。该函数会同时扫描32位和64位软件列表。
接口名称
RegistryGetInstalledSoftware
DLL调用
int64_t RegistryGetInstalledSoftware(int64_t instance)
参数定义:
instance(长整型数): OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
示例:
// 创建OLA对象
int64_t instance = CreateCOLAPlugInterFace();
// 获取已安装软件列表
int64_t jsonPtr = RegistryGetInstalledSoftware(instance);
if (jsonPtr != 0) {
const char* json = (const char*)jsonPtr;
printf("已安装软件列表: %s\n", json);
// JSON格式示例:
// [
// {
// "name": "Microsoft Office",
// "version": "16.0.5134.1000",
// "publisher": "Microsoft Corporation",
// "installDate": "20230101",
// "installLocation": "C:\\Program Files\\Microsoft Office",
// "uninstallString": "C:\\Program Files\\Microsoft Office\\setup.exe /uninstall"
// },
// {
// "name": "OLAPlug",
// "version": "1.0.0",
// "publisher": "OLA",
// "installDate": "20240101"
// }
// ]
// 可以使用JSON解析库处理返回的数据
// 例如统计软件数量、搜索特定软件等
// 释放字符串内存
FreeStringPtr(instance, jsonPtr);
} else {
printf("获取软件列表失败\n");
}
// 释放资源
DestroyCOLAPlugInterFace(instance);
返回值
长整型数:
- 成功: 返回JSON数组字符串句柄,包含软件信息
- 失败: 返回 0
返回的JSON数组中每个软件对象包含以下字段:
name: 软件名称version: 版本号publisher: 发行商installDate: 安装日期(YYYYMMDD格式)installLocation: 安装位置(可选)uninstallString: 卸载命令(可选)
注意事项
- 返回的字符串句柄需使用 FreeStringPtr 释放
- 该函数会同时扫描32位和64位软件列表
- 扫描过程可能耗时较长,建议在后台线程执行
- 某些便携软件可能不会出现在列表中
- 返回的信息取决于软件在注册表中记录的内容
- 部分字段可能为空,取决于软件的安装信息完整性
- 列表包含用户级和系统级安装的软件
