If your looking for suggestions, here's mine:
The first time the program is ran, it generates a list of files
The program loads in the icons in the order given by the list file
If it runs across a missing file, it removes the file from the list, and resaves the list.
If an icon is moved, it...