コンピューターにインストールされているソフトウェアのアイコンを取得しようとしています。
インストールされているソフトウェアリストは、次のレジストリパスから入力されます: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 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
- etc \ git.ico
このすべての例で、アイコンを使用できます。InstallLocation + DisplayIconが実際のソースでない場合は、InstallLocationでDisplayIcon名を検索できます(例:GetDataBackFor *のDisplayIconはgdbnt.exeなので、これを検索し、見つかった場合は彼のアイコンを取得します)
問題は、revoやwindowsアンインストーラーなどの他のアプリがDisplayIconキーを持たないアプリのアイコンをどのように取得するかです。ルートディレクトリを持つInstallLocationのみがあります。彼らはその場所でicoまたはexeを検索しますか?それらが複数の実行可能ファイルであり、この実行可能ファイルの名前がDisplayNameのように見えない場合はどうなりますか?レジストリにそのような情報がない場合、メインの実行可能ファイルからアイコンをどのようにプールしていますか?このようなアプリの例としては、Google Earth、AppleSoftwareUpdateなどがあります。