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是否在本地系统上下文中运行?是,并尝试从本地服务帐户运行。