1- Récupérer le HTOKEN du user :
HTOKEN hUsreToken;
LogonUser(lpszUserName, lpszDomain, lpszpassword, LOGON32_LOGON_BATCH, LOGON32_PROVIDER_DEFAULT, &hUserToken);
// LOGON32_LOGON_BATCH peut être remplacé par d'autres valeurs, cf MSDN)
[ Lien ]2- Créer le process :
STARTUPINFO si = {0};
si.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi = {0};
CreateProcessAsUser(hUserToken, "nom du prog", "paramètres", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);