Как процессу во время выполнения получить привилегии какого-либо пользователя?

//Q: Как процессу во время выполнения получить привилегии
//какого-либо пользователя?

//A: Надо переопределить контекст процесса

HANDLE hToken, hThread;
//Получаем новый контекст
if(LogonUser("uname", "domain", "upass", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken))
  {
     
//Переопределяем контекст процесса
     
ImpersonateLoggedOnUser(hToken);
  }
//Делаем то, что надо от имени этого пользователя
RevertToSelf();//Возвращаем процессу прежний контекст
CloseHandle(hToken);//Освобождаем дескриптор контекста

//Если пользователь локльный, то domain = "."