WTSQueryUserToken wird nur innerhalb eines Service mit aktivem TCB-Privilege funktionieren.
Es ist nicht ganz klar, ob das "andere Programm" mit dem selben User, aber ohne Elevation ausgeführt werden soll, oder als gänzlich anderer User.
Für die Situation, dass eine Un-Elevation ausgeführt werden soll, bieten sich die APIs
CreateRestrictedToken oder
SaferComputeTokenFromLevel an, um ein eingeschränktes Token zu erstellen, das dann für
CreateProcessAsUser verwendet werden kann, um das "andere Programm" un-elevated zu starten.
Siehe auch:
https://stackoverflow.com/questions/...s-from-process