我知道访问令牌已禁用和启用权限。有了一些权限,我可以启用禁用权限,但我不知道如何接收它们的列表。如果我使用权限检查功能,它只会返回已启用的权限。我在 C++ 中使用 winapi。
你能给我一个如何获得禁用权限列表的提示吗(可能是代码片段、函数或其他方向)?
使用该代码:
// Get Process Handle with QUERY_INFORMATION rights
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, PID);
// Get Access Token with READ rights
OpenProcessToken(hProcess, TOKEN_QUERY | TOKEN_QUERY_SOURCE, &hToken);
// Get ID of privelege in the system
if (!LookupPrivilegeValue(NULL, priv_list[i], &luid)) continue;
// Set checking privilege by one
privs.PrivilegeCount = 1;
privs.Control = PRIVILEGE_SET_ALL_NECESSARY;
privs.Privilege[0].Luid = luid;
privs.Privilege[0].Attributes = SE_PRIVILEGE_ENABLED;
// Check enabled privilege
PrivilegeCheck(hToken, &privs, &bResult);
它只返回未禁用的启用权限。
再次重复,如果进程禁用了我可以激活的特权,我想列出它们。
最后我想得到这样的东西: