我正在尝试获取计算机上已安装软件的图标。
安装的软件列表从此注册表路径填充: HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
根据 DisplayName 排除重复项。
现在我尝试从键 DisplayIcon 中获取图标。如果它存在。DisplayIcon 中的值因软件而异。一些例子是休闲:
- D:\Program Files\FileZilla FTP 客户端\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 软件更新等。