1、首先调用OpenProcessToken获取进程的令牌
2、根据要修改的权限名称找到对应的luid,这是通过调用LookupPrivilegeValue
3、调用AdjustTokenPrivileges来修改权限
代码如下
bool improveProcPriv(LPCTSTR str)
{
HANDLE token;
if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) {
qDebug() << "openProcessToken failes";
return false;
}
TOKEN_PRIVILEGES tkp;
tkp.PrivilegeCount = 1;
::LookupPrivilegeValue(NULL, str, &tkp.Privileges[0].Luid);
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!::AdjustTokenPrivileges(token, FALSE, &tkp, sizeof(tkp), (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL)) {
qDebug() << "AdjustTokenPrivileges failed";
return false;
}
CloseHandle(token);
return true;
}