Я думаю, тебе не повезло.ShellExecute запустит второе приложение с повышенными правами либо потому, что оно имеет манифест, либо потому, что вы используете глагол runas
.CreateProcess не будет.
Возможно, вы можете использовать CreateProcess для запуска приостановленного второго приложения, а затем использовать ShellExecute для запуска повышенного третьего приложения, которое фактически выполняет привилегированное действие?В качестве альтернативы вы можете запустить весь набор приложений с повышенными правами или переместить функциональность в службу, не связанную с UAC.