C++ 创建具有特定权限c+的线程+;

C++ 创建具有特定权限c+的线程+;,c++,winapi,visual-c++,multithreading,C++,Winapi,Visual C++,Multithreading,我有一个多线程应用程序,我想创建一个具有不同用户权限(例如:多域管理员权限)的线程 但是我找不到任何Win32 APICreateThread来实现这一点 如何创建具有特定用户权限的线程? 谢谢。使用CREATE\u SUSPENDED标志调用CreateThread(),然后调用SetThreadToken(),然后调用ResumeThread()。通过以指定用户身份登录线程,从您想要具有特定用户权限的线程调用此命令: HANDLE hToken; BOOL bRet = LogonUser(

我有一个多线程应用程序,我想创建一个具有不同用户权限(例如:多域管理员权限)的线程

但是我找不到任何Win32 API
CreateThread
来实现这一点

如何创建具有特定用户权限的线程?


谢谢。

使用
CREATE\u SUSPENDED
标志调用CreateThread(),然后调用SetThreadToken(),然后调用ResumeThread()。

通过以指定用户身份登录线程,从您想要具有特定用户权限的线程调用此命令:

HANDLE hToken;
BOOL bRet = LogonUser("username","domain","password",
    LOGON32_LOGON_INTERACTIVE,
    LOGON32_PROVIDER_DEFAULT,&hToken);
if(!bRet)
    // Add your own fault handling here
    return MessageBox(NULL,"Could not log on","Error",MB_OK|MB_ICONSTOP);
bRet = ImpersonateLoggedOnUser(hToken);
if(!bRet)
    // Add your own fault handling here
    return MessageBox(NULL,"Could not impersonate","Error",MB_OK|MB_ICONSTOP);

这是行不通的。即使模拟了进程,新生成的线程也将以父进程的用户权限运行。因此,在挂起模式下创建线程、设置线程令牌(模拟令牌)然后恢复(ResumeThread())是解决方案