Warum empfiehlst Du und viele andere ShellExecute? In deinem Link steht doch "Applications should use the CreateProcess function."
Ganz einfach: ShellExecute ist einfacher.
CreateProcess ist die deutlich mächtigere Funktion, aber als Ersatz für WinExec ist ShellExecute einfach mal schnell ersetzt, CreateProcess braucht ein wenig mehr Code.
Bleibe dann nicht nur das "andere Programm" nicht als Administrator laufen zu lassen sondern normal? So können alte Programme das noch staren. Dafür müsste dann das "andere Programm" dann ein weiteres Programm mit Administatorrechten starten dass dann tut was man nur mit Administatorrechten tun kann.
Es kann sich auch selbst ein zweites Mal mit Adminrechten starten und die erste Instanz bei fehlenden Rechten mit einer Meldung gleich wieder beenden. So nach dem Motto: Es werden Adminrechte benötigt! [Ok][Cancel].