Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WTSQueryUserToken()给出错误\u权限\u未\u保持_C++_Windows_Winapi - Fatal编程技术网

C++ WTSQueryUserToken()给出错误\u权限\u未\u保持

C++ WTSQueryUserToken()给出错误\u权限\u未\u保持,c++,windows,winapi,C++,Windows,Winapi,我在调用WTSQueryUserToken()时遇到了非常常见的错误。它返回false和GetLastError()显示ERROR\u PRIVILEGE\u NOT\u hold。 我尝试设置特权(返回OK),但调用WTSQueryUserToken时发现同样的问题 LUID luid; bRet = LookupPrivilegeValue(NULL, SE_TCB_NAME, &luid); if (!bRet) { hr = GetLastErro

我在调用
WTSQueryUserToken()
时遇到了非常常见的错误。它返回false和
GetLastError()
显示
ERROR\u PRIVILEGE\u NOT\u hold
。 我尝试设置特权(返回OK),但调用WTSQueryUserToken时发现同样的问题

LUID luid;
    bRet = LookupPrivilegeValue(NULL, SE_TCB_NAME, &luid);
    if (!bRet) {
        hr = GetLastError();
        return hr;
    }

    TOKEN_PRIVILEGES adjTokenPrivileges;// = { 0 };
    adjTokenPrivileges.PrivilegeCount = 1;
    adjTokenPrivileges.Privileges[0].Luid = luid;
    adjTokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    //CSampleCredential::Log("AdjustTokenPrivileges...");
    DWORD dwOldTPLen;
    bRet = AdjustTokenPrivileges(processToken, FALSE, &adjTokenPrivileges, sizeof(TOKEN_PRIVILEGES), &oldTokenPrivileges, &dwOldTPLen);
    if (bRet) {
        hr = GetLastError();
        if (hr == ERROR_SUCCESS);
        else if (hr == ERROR_NOT_ALL_ASSIGNED) {
            // Enabled by default
        }
    }
    else {
        hr = GetLastError();
        return hr;
    }
    //CSampleCredential::Log("WTSGetActiveConsoleSessionId...");
    DWORD conSessId = WTSGetActiveConsoleSessionId();
    if (conSessId == 0xFFFFFFFF) {
        // There is no session attached to the console
        return ERROR_SUCCESS;
    }

    //impersonationToken = GetCurrentUserToken();
    //CSampleCredential::Log("WTSQueryUserToken...");
    bRet = WTSQueryUserToken(conSessId, &impersonationToken);
    if (!bRet) {
        hr = GetLastError();    
        return hr;
    }
服务特权也可以


操作系统:Windows 7 64

是否在本地系统上下文中运行?是,并尝试从本地服务帐户运行。