Предполагая, что ваш деинсталлятор работает с привилегиями администратора, вы можете просто получить каталог User и затем перечислить все каталоги пользователей там.
Вы можете запустить исполняемый файл из Inno Setup, написанный на любом языке, который вы хотите. В нем вы можете сначала получить каталог данных приложения текущего пользователя, используя функцию SHGetSpecialFolderPath . Для Win7 это будет выглядеть примерно так:
c:\Users\MyUser\AppData\Roaming\
Вы можете использовать GetUserName , чтобы получить имя пользователя (в данном случае MyUser), найти родительский каталог и разбить строку на родительский каталог «C: \ Users \» и «AppData \ Roaming». \». Затем вы можете использовать FindFirstFile / FindNextFile для перечисления всех пользовательских каталогов и просто добавить к ним вторую часть «AppData \ Roaming \» и проверить, существует ли файл. Разделив каталог, который вы получаете от SHGetSpecialFolderPath, вы гарантируете, что он будет работать как в XP (которая будет возвращать что-то вроде C: \ Documents and Settings \ MyUser \ Application Data "), так и в Win7. По сути, вы просто заменяете MyUser всеми именами пользователей в строке, возвращаемой SHGetSpecialFolderPath.
Понятия не имею, позволяет ли это избежать безопасности ОС или работает с роуминг-пользователями.