Mit EnumWindows dürfte er nicht weiter kommen. Ein Dienst läuft in einer anderen Windows Station und sieht die Fenster des Benutzers gar nicht.
Normalerweise... Aber dafür gibt es ja OpenWindowStation, SetProcessWindowStation, GetUserObjectInformation, OpenDesktop, SetThreadDesktop und Konsorten.