Was genau hat denn bei LogonUser() und ImpersonateLoggedOnUser() nicht funktioniert? Was sagt GetLastError, etc? Ich vermute mal deinem Benutzerkonto fehlt das "SeImpersonatePrivilege", welches standardmäßig nur Administrator Accounts besitzen. In diesem Falle würde ich vermutlich einfach eine neue Instanz des eigenen Prozesses über CreateProcessAsUser() starten und per Parameter signalisieren, dass die entsprechende Admin Funktionalität ausgeführt werden soll.
Das LogonUser und ImpersonateLoggedOnUser funktioniert. Das sehe ich beispielsweise daran, wenn ich auf Dateien zugreifen möchte- Blockiere ich einem Benutzer explizit den Schreibzugriff auf die Datei, gebe mich dann als dieser aus, kann ich dort auch nicht mehr schreiben.
Das scheint allerdings nur die "Persönlichkeit" an sich zu betreffen. Gebe ich mich beispielsweise als Administrator aus, kann ich trotzdem keine
HKLM-Registry-Veränderungen durchführen oder Systemdateien löschen.
Die Errorcodes reiche ich nach, Sorry