我写了一个Windows服务。它在系统级别运行。我使用以下代码来获取登录用户的用户名。但我想为该用户会话获取一个环境变量。我怎样才能做到这一点?
DWORD sessionId = WTSGetActiveConsoleSessionId();
qInfo() << "session id = " << sessionId;
wchar_t* ppBuffer[100];
DWORD bufferSize;
WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, sessionId, WTSUserName, ppBuffer, &bufferSize);
qInfo() << "Windows User Name = " << QString::fromWCharArray(*ppBuffer);
答案 0 :(得分:1)
使用WTSQueryUserToken()
获取所需会话ID的登录用户令牌,然后将该令牌传递给CreateEnvironmentBlock()
以获取该用户的环境变量。
然后,您可以根据需要解析这些字符串,或将它们(和令牌)传递给
CreateProcessAsUser()
以用户在会话中启动程序。