I'm struggling to understand all of the SECURITY_LOGON_TYPE values:
typedef enum _SECURITY_LOGON_TYPE {
Interactive = 2,
Network,
Batch,
Service,
Proxy,
Unlock,
NetworkCleartext,
NewCredentials,
RemoteInteractive,
CachedInteractive,
CachedRemoteInteractive,
CachedUnlock
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
I'm trying to understand them in the context of a C++ code like this, that lists all logon sessions:
//Error handling is skipped!
ULONG n = 0;
LUID* pluid;
LsaEnumerateLogonSessions(&n, &pluid);
for(ULONG s = 0; s < n; s++)
{
PSECURITY_LOGON_SESSION_DATA* ps;
LsaGetLogonSessionData(&pluid[s], &ps);
//Analyze logon type
ps->LogonType;
LsaFreeReturnBuffer(ps);
}
LsaFreeReturnBuffer(pluid);
So far I can understand these:
Interactive
if the actual (human) user logged in to the workstation. (As we are now while viewing this page.)RemoteInteractive
if a Remote Desktop Connection has been established with this workstation.
Can someone add more description to other values?