2012-09-05 97 views
2

我試圖在計算機上獲取已安裝軟件的圖標。獲取已安裝程序的DisplayIcon

安裝的軟件列表是從這個註冊表路徑填充: HKCU \ SOFTWARE \微軟\的Windows \ CurrentVersion \卸載 HKLM \ SOFTWARE \微軟\的Windows \ CurrentVersion \卸載 HKLM \ SOFTWARE \ Wow6432Node \微軟\的Windows \ CurrentVersion \ Uninstall

根據DisplayName排除重複項。

現在我嘗試從DisplayIcon鍵獲取圖標。如果它存在。 DisplayIcon中的值因軟件而異。有些例子是作爲休耕:

  • d:\ Program Files文件\的FileZilla FTP客戶端\ FileZilla.exe
  • C:\ Program Files文件\ Common Files文件\ Microsoft共享\ OFFICE12 \ Office安裝程序控制器\ 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名稱(例如:DisplayIcon for GetDataBackFor *是gdbnt.exe,因此我搜索這個,如果發現我拿他的圖標)

問題是其他應用程序如revo或windows卸載程序如何採取沒有DisplayIcon密鑰的應用程序的圖標。他們只有具有根目錄的InstallLocation。他們在那個地方搜索ico或exe的?如果它們不止一個可執行文件,並且這個可執行文件的名稱看起來不像DisplayName?如果在註冊表中沒有這樣的信息,它們如何將主要可執行文件的圖標集中起來?此類應用程序的 例子是谷歌地球,蘋果軟件更新等

+0

這似乎是[獲取與應用程序圖標安裝的程序列表](http://stackoverflow.com/q/2907565/62576)的潛在副本。 –

+0

你不明白這個問題,或者我解釋說這個問題很糟糕。問題在於那些沒有關於圖標的信息(可執行文件,圖標,InstallLocation中只有一個可執行文件)。 – andySF

+0

你是對的。我誤解了這個問題。 :-)在你顯示的例子中,它是指示圖標:對於FileZilla.exe,找到的第一個圖標;對於Office,OSETUP.DLL中索引爲1的圖標;對於Fiddler2,它是圖標文件'IE_Toolbar.ico'本身;對於Winamp,它是Winamp.exe中找到的第一個圖標(索引0);最後一個是在安裝路徑下的'etc \'文件夾中找到的圖標文件'git.ico'。 –

回答

相關問題