- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直试图让这个电话合作,但没有成功。
我正在尝试获取当前用户的 SID 值以获得用户的帐户权限(使用 LsaEnumerateAccountRights)。虽然我不知道为什么我对 GetTokenInformation 的调用返回 false。检索进程 token 没有错误。
到目前为止,这是我在该主题上的工作:
HANDLE h_Process;
HANDLE h_Token;
HANDLE h_retToken;
TOKEN_USER tp;
DWORD cb = sizeof(TOKEN_USER);
PDWORD ret;
DWORD dw_TokenLength;
h_Process = GetCurrentProcess();
if (OpenProcessToken(h_Process, TOKEN_READ, &h_Token) == FALSE)
{
printf("Error: Couldn't open the process token\n");
return -1;
}
if (GetTokenInformation(h_Token, TokenUser, &tp, cb, &dw_TokenLength) == FALSE)
{
printf("Error: Could not retrieve Token User information");
return -1;
}
与此同时,我不妨问一个我还没有遇到的后续问题,如何从形成的 TOKEN_USER 结构中检索 SID?
对于这样一个简单的问题,我提前表示歉意,我只是被难住了,希望得到一些帮助才能继续。与这个问题相关的所有问题都复杂得多,对我当前的问题几乎没有任何见解。
提前致谢, 乔恩
最佳答案
根据documentation For GetTokenInformation ,如果函数失败,您可以通过调用 GetLastError
检索更多信息.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
所以你需要对扩展错误进行一些检查:
if (!GetTokenInformation(h_Token, TokenUser, &tp, cb, &dw_TokenLength))
{
int lastError = GetLastError();
// Should be a switch, of course. Omitted for brevity
if (lastError == ERROR_INSUFFICIENT_BUFFER)
{
//
}
}
作为一般经验法则,在使用具有不同缓冲区要求的 WinAPI 函数时,您通常
ReturnLength
参数中返回)关于c++ - GetTokenInformation 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322307/
我一直试图让这个电话合作,但没有成功。 我正在尝试获取当前用户的 SID 值以获得用户的帐户权限(使用 LsaEnumerateAccountRights)。虽然我不知道为什么我对 GetTokenI
我使用以下 C# 代码: enum TOKEN_INFORMATION_CLASS { TokenUser = 1, TokenGroups, TokenPrivileges,
下面的代码返回一个 ERROR_INSUFFICIENT_BUFFER 错误: DWORD dwReturnedDataSize; if (!GetTokenInformation(hToken,To
查看 GetTokenInformation() 的 MSDN 文档和 Getting the Logon SID例如,需要调用 GetTokenInformation() 两次。第一个调用是获取缓冲
为什么使用 TokenGroups 的 GetTokenInformation 返回的用户组列表比 net user 命令或“本地用户和组”中列出的命令? 最佳答案 一些组(Interactive、
我想恢复用户名的所有权限。例如特权:“SE_ASSIGN_PRIMARY_TOKEN_PRIVILEGE”、“SE_AUDIT_PRIVILEGE”、“SE_DEBUG_PRIVILEGE”……我搜索
我正在尝试检索与 C# 中的 token 关联的权限及其当前状态,但我不知道如何调整返回的 LUID_AND_ATTRIBUTES 数组的大小以适应元素的实际数量。 来自 MSDN When Mars
我很好奇我在理解 API 时是否遗漏了一些应该首先使用 NULL 参数调用以检索所需缓冲区大小然后在分配缓冲区后再次调用它们的内容。 我的理解是,从第一次调用到第二次调用,此缓冲区长度不会改变。 (好
我正在使用 GetTokenInformation 作为确定当前线程是否以管理员身份运行的代码的一部分。 无论如何,我的 token 信息结构如下所示: Private Type TOKEN_GROU
我遵循提供的 pinvoke 代码 here但是我有点害怕将可变长度数组编码为 size=1,然后通过计算偏移量而不是索引到数组来单步执行它。难道没有更好的办法吗?如果不是,我应该怎么做才能使 32
我在调用 GetTokenInformation 时遇到问题,由于某种原因,它在 Windows Server 2003 32 位上失败但在服务器 2008 64 位上成功。 PTOKEN_U
我是一名优秀的程序员,十分优秀!