【发布时间】:2009-12-09 13:12:06
【问题描述】:
我有一个多线程应用程序,我想创建一个具有不同用户权限的线程(例如:多域管理员权限)。
但我找不到任何 Win32 API CreateThread 来执行此操作。
如何创建具有特定用户权限的线程?
谢谢。
【问题讨论】:
标签: c++ winapi visual-c++ multithreading
我有一个多线程应用程序,我想创建一个具有不同用户权限的线程(例如:多域管理员权限)。
但我找不到任何 Win32 API CreateThread 来执行此操作。
如何创建具有特定用户权限的线程?
谢谢。
【问题讨论】:
标签: c++ winapi visual-c++ multithreading
使用CREATE_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);
【讨论】: