使用特定权限c ++创建线程

时间:2009-12-09 13:12:06

标签: c++ winapi visual-c++ multithreading

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

但我找不到任何Win32 API CreateThread来执行此操作。

如何使用特定用户权限创建线程?

感谢。

2 个答案:

答案 0 :(得分:6)

使用CREATE_SUSPENDED标志调用CreateThread(),然后调用SetThreadToken(),然后调用ResumeThread()。

答案 1 :(得分:2)

通过以指定用户身份登录线程,从您希望拥有特定用户权限的线程中调用此命令:

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);