C++ WTSQueryUserToken 函数错误

标签 c++ token

我正在尝试让我的服务以用户身份创建一个进程,但我必须首先获取 token 。现在由于某种原因,我的函数不断返回错误 87,即 ERROR_INVALID_PARAMETER。有人知道为什么吗?它已经困扰我几个小时了,从我所看到的参数是正确的。谢谢。

这是我的代码:

PHANDLE currentToken = 0;
ULONG id = WTSGetActiveConsoleSessionId();
    printf("ULONG = %d", id);
// Get token of the logged in user by the active session ID
BOOL bRet = WTSQueryUserToken(id, currentToken);
if (bRet == false)
{
    printf("ERROR: %d", GetLastError());
}

最佳答案

我按照如下方式解决了这个问题: 将 currentToken 定义为 HANDLE 而不是指针 (PHANDLE) 并将对其的引用传递给 WTSQueryUserToken 函数

PHANDLE currentToken = 0; 
changes to:
HANDLE currentToken = 0; 

还有...

BOOL bRet = WTSQueryUserToken(id, currentToken);
//Change this to:
BOOL bRet = WTSQueryUserToken(id, &currentToken);

在此之后,我收到了 1314 - ERROR_PRIVILEGE_NOT_HELD 错误,但那是因为应用程序需要以用户“localsystem”身份运行,而唯一的方法是将其作为服务运行 - 超出了此答案的范围,我无论如何解决了87错误!

关于C++ WTSQueryUserToken 函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17387939/

相关文章:

c++ - 使用 files_put 上传 DropBox 返回身份验证失败

c++ - 序列化和反序列化位域

javascript - get 对此未定义。vuejs 的 $cookie.get

c - 使用具有不同分隔符的 token

git - 如何使用 curl 删除 GitLab 存储库?

c++ - 读取 txt 文件并将值放入列表中 (c++)

c++ - 从未达到打开枚举后的保护代码

c++ - 为什么会有所谓的身份转换呢?

laravel - 解决 Laravel 中 token 不匹配错误的正确方法是什么?

javascript - 如何在 ajax header 中为每个用户发送 api token ?