Habe ich das richtig verstanden: Der Prozess wird erzeugt und CreateProcessWithToken meldet TRUE, aber GetLastError ist ERROR_DEVICE_NO_RESOURCES? Bei Erfolg eines
API Aufrufs ist GetLastError nicht eindeutig definiert, von daher würde ich mir keine Gedanken machen, sofern die Process Creation ansich funktioniert.
Ansonsten musst du beachten, dass dein Prozess diverse Privilegien benötigt. Hier der Auszug aus dem
MSDN:
Zitat:
The process that calls CreateProcessWithTokenW must have the SE_IMPERSONATE_NAME privilege. If this function fails with ERROR_PRIVILEGE_NOT_HELD (1314), use the CreateProcessAsUser or CreateProcessWithLogonW function instead. Typically, the process that calls CreateProcessAsUser must have the SE_INCREASE_QUOTA_NAME privilege and may require the SE_ASSIGNPRIMARYTOKEN_NAME privilege if the token is not assignable. CreateProcessWithLogonW requires no special privileges, but the specified user account must be allowed to log on interactively. Generally, it is best to use CreateProcessWithLogonW to create a process with alternate credentials.
Dort wird auch empfohlen, eher CreateProcessWithLogon zu verwenden.