mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-12 22:40:54 +01:00
Ref: https://github.com/mirror/mingw-w64/commit/931ca20b233e766950e7758cff71c270937b0b64
35 lines
1.0 KiB
C
35 lines
1.0 KiB
C
#include "users.h"
|
|
#include "util/windows/unicode.h"
|
|
|
|
#include <wtsapi32.h>
|
|
|
|
void ffDetectUsers(FFlist* users, FFstrbuf* error)
|
|
{
|
|
WTS_SESSION_INFO_1W* sessionInfo;
|
|
DWORD sessionCount;
|
|
DWORD level = 1;
|
|
|
|
if(!WTSEnumerateSessionsExW(WTS_CURRENT_SERVER_HANDLE, &level, 0, &sessionInfo, &sessionCount))
|
|
{
|
|
ffStrbufAppendS(error, "WTSEnumerateSessionsW(WTS_CURRENT_SERVER_HANDLE) failed");
|
|
return;
|
|
}
|
|
|
|
for (DWORD i = 0; i < sessionCount; i++)
|
|
{
|
|
WTS_SESSION_INFO_1W* session = &sessionInfo[i];
|
|
if(session->State != WTSActive)
|
|
continue;
|
|
|
|
FF_STRBUF_AUTO_DESTROY domainName = ffStrbufCreateWS(session->pDomainName);
|
|
FF_STRBUF_AUTO_DESTROY userName = ffStrbufCreateWS(session->pUserName);
|
|
|
|
ffStrbufInitF((FFstrbuf*)ffListAdd(users), "%s\\%s", domainName.chars, userName.chars);
|
|
}
|
|
|
|
WTSFreeMemoryExW(WTSTypeSessionInfoLevel1, sessionInfo, 1);
|
|
|
|
if(users->length == 0)
|
|
ffStrbufAppendS(error, "Unable to detect users");
|
|
}
|