获取已安装程序的DisplayIcon

时间:2012-09-05 14:10:18

标签: c# windows

我正在尝试在计算机上获取已安装软件的图标。

已从此注册表路径填充已安装的软件列表: HKCU \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载 HKLM \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载 HKLM \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \卸载

根据DisplayName排除重复项。

现在我尝试从关键的DisplayIcon获取图标。如果它存在。 DisplayIcon中的值因软件而异。一些例子是休闲:

  • D:\ Program Files \ FileZilla FTP Client \ FileZilla.exe
  • C:\ Program Files \ Common Files \ Microsoft Shared \ OFFICE12 \ Office Setup Controller \ OSETUP.DLL,1
  • D:\ Program Files \ Fiddler2 \ IE_Toolbar.ico
  • dfshim.dll,2
  • D:\ Program Files \ Winamp \ winamp.exe,0
  • 等\ git.ico

对于所有这些例子,我都可以使用图标。如果InstallLocation + DisplayIcon不是真正的源代码,我可以在InstallLocation中搜索DisplayIcon名称(例如:GetDataBackFor *的DisplayIcon是gdbnt.exe,所以我搜索了这个,如果找到了,我会带上他的图标)

问题在于revo或windows卸载程序等其他应用程序如何使用没有DisplayIcon密钥的应用程序图标。它们只有InstallLocation和根目录。他们在那个位置搜索ico或exe?如果它们是多个可执行文件并且此可执行文件的名称看起来不像DisplayName,该怎么办?如果在注册表中没有这样的信息,他们如何汇集主要可执行文件中的图标? 此类应用的示例包括Google地球,Apple软件更新等。

1 个答案:

答案 0 :(得分:0)

我们可以从以下位置找到有关已安装产品图标的信息 此信息与Install -

一起存储在Installer \ product密钥的注册表中

密钥名称 - HKEY_CLASSES_ROOT \ Installer \ Products {productID}

价值 - ProductIcon

从这里我们可以获得已安装应用程序的图标。 有关详细信息http://newapputil.blogspot.in/2015/06/extract-icons-of-installed-windows_17.html