Don't use the manifest elevation. Instead run your setup with normal privileges, call ShellExecute with verb=runas and call your setup again e.g. with a parameter. In the end you can inform (either a ExitCode, SendMessage or an Event) the first setup, running as user, to start your main application (as user of course).