gpt4 book ai didi

c++ - OpenProcessToken 在 ImpersonateLoggedOnUser 后失败

转载 作者:行者123 更新时间:2023-11-28 08:17:48 28 4
gpt4 key购买 nike

我有一项服务正在模拟用户。该服务作为本地系统运行。用户是本地管理员和域管理员。模拟之后,我有必要调整进程的 token 权限。我希望使用 OpenProcessToken 然后在返回的 token 句柄上使用 AdjustTokenPrivileges 来做到这一点。

调用 LogonUserImpersonateLoggedOnUser 后,以下调用失败并拒绝访问。

HANDLE hToken;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
{
Log("Error=%d", GetLastError());
}

我正在使用 LOGON32_LOGON_INTERACTIVELOGON32_PROVIDER_DEFAULT 登录用户。

在用户 token 上调整相同的权限成功。

最佳答案

这是一个分为两部分的答案,具体取决于您要执行的操作:

1) 如果要调整模拟 token 的权限,需要使用 OpenThreadToken 函数,而不是 OpenProcessToken。模拟影响线程,而不是整个进程。试试这个:

OpenThreadToken(GetCurrentThread(), TOKEN_READ | TOKEN_ADJUST_PRIVILEGES, TRUE, &hToken)

2) 如果您真的想调整进程 token 的权限,您可能应该在不模拟客户端时执行此操作。您可以根据需要打开和关闭模拟。

关于c++ - OpenProcessToken 在 ImpersonateLoggedOnUser 后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068164/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com