这几天一直被读取本地计算机中的安装程序列表这个问题搞的头昏脑涨。
在开始的时候,我本来是想找个Open Source的软件来搞定这个问题的,但是找了好久也没有能用的,更不要说找个能够被调用的啦!于是自己就想办法看看能不能把这个问题搞定!
在网上找了好久 ,找到了一个非常有用的信息 ,那就是计算机中所有的安装程序在存在在注册表中,路径是:HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall。在这个键下面的所有子键就是在本地计算机中的所有的安装程序,而所有的程序名存储在DisplayName字段中。
由于在开始时,需要用JAVA来实现,所以就在网上找到了一个Sigar.jar,全称是org.hyperic.sigar,在这个包下面有个类RegistryKey,路径是org.hyperic.sigar.win32.RegistryKey。
使用Java的实现时,首先必须先包含Sigar.jar,实现过程如下:
public String[] getDisplayNames()
{
String[] namesList=null;
String[] displayNames=null;
try
{
RegistryKey rk=RegistryKey.LocalMachine.openSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall");//用于打开注册表目录。
namesList=rk.getSubKeyNames();//获取注册表中的所有子键名。
displayNames=new String[namesList.length];
for(int i=0;i<namesList.length;i++)
{
RegistryKey subrk=rk.openSubKey(namesList[i]);
displayNames[i]=subrk.getStringValue("DisplayName", "nothing"); ;//获取displayName。其中第二个参数"Nothing"为"DisplayName"的默认值,如果"DisplayName"不存在,则"DisplayName"的值为"Nothing"。
}
}
catch(Exception err)
{
}
return displayNames;//返回
}
使用C#的实现过程如下:
public string[] getDisplayNames()
{
Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");//用于打开注册表目录。
String[] keyNames = rk.GetSubKeyNames();//获取注册表中的所有子键名。
String[] displayNames = new String[keyNames.Length];//声明用于存储displayName的字符串数组。
for (int i = 0; i < keyNames.Length; i++)//用于循环读取DisplayName
{
Microsoft.Win32.RegistryKey subkey = rk.OpenSubKey(keyNames[i]);//根据子键名,来打开子键。
string displayName = subkey.GetValue("DisplayName", "Nothing").ToString();//获取displayName。其中第二个参数"Nothing"为"DisplayName"的默认值,如果"DisplayName"不存在,则"DisplayName"的值为"Nothing"。
displayNames[i] = displayName; //对数组赋值
}
return displayNames;//返回
}
在读取了DisplayName字段之后,也并不意味着读取了正确的程序名。DisplayNames中存在一些值为Nothing的情况, 而且也存在Windows的安装更新程序,这就需要对DisplayNames中的某些值进行过滤。
最后有一点需要说明的是,这种读取注册表的方法只能在windows系统中使用。
分享到:
相关推荐
读取Excel表中所有的信息错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
下载安装AccessDatabaseEngine_X64后,可以不用再安装office 实现读取Excel文件 代码连接如下:private static string connString = "provider=Microsoft.ACE.OLEDB.16.0;Data Source={0};Extended Properties=...
封装 iOS 系统常用接口,存取bundle中的资源,读取本地化文本,执行选择器和 UserDefaults 的相关操作,调用通知中心的相关操作等。 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++...
读取excel表格时电脑弹出错误窗口,提示“未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序”问题,是因为系统中没有安装相应的Microsoft Access 2007 数据库引擎可再发行程序包,安装此文件问题解决。
此下载将安装一组组件,是解决「未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。」错误的方案之一; 这个组件使得非 Microsoft Office 应用程序可以使用它们从 2007 Office system 文件中读取数据例如...
允许查看本地图像。 构建设置 # install dependencies npm install # serve with hot reload at localhost:9080 npm run dev # build electron application for production npm run build # lint all JS/Vue ...
“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序” 代码示例: static void Main(string[] args) { readexcel(D:\\test\\xlsxtest.xlsx); } public static void readexcel(string _path) { ...
网络监控简易本地安装版本是一个独立的.NET开发的服务程序,安装在您的服务器或者电脑上,能实时监控网络,出故障自动发邮件报警。 1、网络监控简易版源码使用Microsoft Visual Studio 2008开发 2、无需要数据库,...
选择 "下一步",然后选择 "本地计算机" 进行安装 点击下一步,如果出现以下错误信息对话框(一般是在之前你的计算机上安装过SQL server2000组件,才会出现) 此时重启计算机不一定有效,在这我介绍一种更为...
列表中存在PRIMARY MASTER 第一组IDE主设备;PRIMARY SLAVE 第一组IDE从设备;SECONDARY MASTER 第二组IDE主设备;SECONDARY SLAVE 第二组IDE从设备。这里的IDE设备包括了IDE硬盘和IDE光驱,第一、第二组设备是指...
它一方面负责接收网络上传递的数据包,解包后将数据通过主板上的总线传输给本地计算机;另一方面将本地计算机上的数据打包后送入网络。 任务1 认识计算机 2.观察计算机的外部设备 显示器 1)显示器 任务1 认识计算机...
如果在本地网络中配置了 SLP 服务器,则安装源尤其易于选择。有关详细信息, 请参见第 4.2 节 “设置存放安装源的服务器” (第 4 章 远程安装, ↑安装与管理)。 1.4 安装目标 多数安装是安装到本地硬盘上。因此,...
不用任何软件给SD卡分区,且能直接用读卡器读取所有分区 分下面两步: 一、读卡器读取所有分区: SD卡分区了,电脑不认后面的分区,只能看到第一个分区。怎么办呢? 一般我们的读卡器,在我的电脑中,显示的是可...
具体的命令格式是:netstat -an这个命令能看到所有和本地计算机建立连接的IP,它包含四个部分——proto(连接方式)、local address(本地连接地址)、foreign address(和本地建立连接的地址)、state(当前端口状态)。...
数据备份:该软件可以将远程计算机的数据备份到本地计算机上,确保数据的安全性和可靠性。 系统管理:该软件可以对远程计算机进行系统管理,包括系统信息查询、软件安装、系统维护等操作。 系统运行概述 1.启动被...
安装vfpoledb.exe(VFP9的OLEDB),在项目中引用Microsoft OLE DB Provider for FoxPro 7.0 Type Library 1.0,然后使用如下代码: OleDbConnection con = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=D:...
您可以从当前 -.DAT 文件的预定义列表中选择程序所有类别或这些类别 中的特定程序。也可以添加自己的程序进行检测。 配置分两步进行: - 首先,在"有害程序策略"中配置要检测的程序。默认情况下,此策 ...
这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 有关如何在实时系统上部署项目的注释,请参阅部署。 先决条件 为了能够运行此程序,请确保您在计算机上安装了必要的软件包: #### ...