Das einfachste wäre, wenn dein Programm normal startet und dann einen
Thread SubProzess als "admin" startet, nur kurz, so lange für die Aktion nötig.
Den
CreateProcess bzw.
CreateProcessAsUser kann man mitgeben, wie sie was starten soll (falls man dort nicht nil angibt)
Entweder vor dem Start merken, wie das non-elevated-Token aussieht
oder Dieses vom aktiven User (aktive Terminal-Session) abfragen
und dann im "admin" dieses Token (Rechte) für den Start des "non-admin" benutzen.
https://stackoverflow.com/questions/...-admin-process
https://learn.microsoft.com/en-us/an...rivileges-from
...
Beim ShellExecute vielleicht mal "runasuser" anstatt "runas" als Operation probieren.