AppsIndexator is an automated Windows desktop utility built with C# and WPF that indexes all installed software on the system, traverses Start Menu shortcuts, and extracts high-resolution application icons directly from executables and DLLs using native Windows Shell APIs.
Warning
Developed in September 2019 for Windows 10 and .NET Framework 4.7.2. Archived for historical and technical reference. It has not been tested or updated for Windows 11.
As part of developing FoxDock and the FoxDock IconPack Creator, there was a frequent need to gather large sets of application icons from installed programs to create rich dock theme packs. Doing this manually was tedious.
AppsIndexator was written to fully automate this workflow: scanning registry hives, resolving nested shortcut trees, extracting embedded PE resources, and converting native icon handles (HICON) into clean, transparent PNG image files organized in a temporary staging directory.
The utility combines registry traversal with low-level Win32 P/Invoke wrappers:
- Registry Enumeration (
MainWindow.xaml.cs):- Scans both 64-bit and 32-bit registry paths (
SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallandSOFTWARE\Wow6432Node\...). - Reads
DisplayName,InstallLocation, and associated primary.exebinaries.
- Scans both 64-bit and 32-bit registry paths (
- Start Menu Shortcut Resolver (
FileTools.cs):- Scans user (
%APPDATA%) and system-wide (%PROGRAMDATA%) Start Menu shortcut directories (*.lnk). - Resolves target paths and arguments using the Windows Shell COM object (
WScript.Shell).
- Scans user (
- Native Icon Extraction (
Icons.cs,API/Shell32.cs,API/GDI32.cs):- Uses
SHGetFileInfoandExtractIconExfromshell32.dllto read high-resolution icon groups. - Converts native device-independent bitmaps (
HBITMAP) to WPFBitmapSourceviaImaging.CreateBitmapSourceFromHBitmap. - Serializes transparent icons into PNG files using
PngBitmapEncoder.
- Uses
- WPF Taskbar Integration:
- Leverages
TaskbarItemInfoto reflect live batch indexing progress and state directly in the Windows taskbar icon.
- Leverages
experiments/shicons/: The initial proof-of-concept created in August 2019 testing the extraction of raw icon indices from Windows system dynamic link libraries (shell32.dll).
apps-indexator/
├── AppsIndexator.sln # Visual Studio solution
├── AppsIndexator/
│ ├── MainWindow.xaml # WPF progress and logging interface
│ ├── MainWindow.xaml.cs # Core indexing pipeline & background tasks
│ ├── Icons.cs # High-res icon extraction and PNG writer
│ ├── FileTools.cs # Lnk shortcut resolution & path utilities
│ ├── API/
│ │ ├── Shell32.cs # Shell32 P/Invoke definitions
│ │ ├── Win32.cs # Win32 user/kernel P/Invoke signatures
│ │ └── GDI32.cs # GDI32 graphic device context interop
│ ├── icon.ico # Application icon
│ └── AppsIndexator.csproj # Project file (.NET Framework 4.7.2)
├── experiments/
│ └── shicons/ # Shell32 icon extraction research prototype
└── logo.png # Project branding
