CreateProcessWithLogonW benutzt den sekundären Anmeldedienst. ShellExecute und runas macht das über die Shell.
Alle verschiedenen 3rd-Party RunAs()-Funktionen, die ich kenne, arbeiten intern mit dem Aufruf der
API-Funktion CreateProcessWithLogonW() und sind abhängig vom Dienst "Sekundäre Anmeldung", wie ja leicht praktisch nachzuvollziehen ist.
Und zumindestens unter Delphi7 gibt es ja keine genuine Funktion RunAs(), und auch unter DelphiXE habe ich keine solche finden können.