试图理解SECURITY_LOGON_TYPE枚举

Trying to understand SECURITY_LOGON_TYPE enumeration

本文关键字:LOGON 枚举 TYPE SECURITY      更新时间:2023-10-16

我正在努力理解所有SECURITY_LOGON_TYPE值:

typedef enum _SECURITY_LOGON_TYPE { 
  Interactive              = 2,
  Network,
  Batch,
  Service,
  Proxy,
  Unlock,
  NetworkCleartext,
  NewCredentials,
  RemoteInteractive,
  CachedInteractive,
  CachedRemoteInteractive,
  CachedUnlock
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;

我试图在这样的C++代码上下文中理解它们,该代码列出了所有登录会话:

//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);

到目前为止,我可以理解这些:

  1. Interactive实际(人类)用户是否登录到工作站。(就像我们现在查看此页面时一样。

  2. RemoteInteractive是否已与此工作站建立远程桌面连接。

有人可以为其他值添加更多描述吗?

MSDN 的解释都是不言自明的,有以下说明:

  1. CachedXXXX - 不要要求域控制器进行验证;而是检查凭据的本地缓存副本。
  2. Batch - 使用批处理登录类型运行的计划任务。 您可以拒绝批量登录权限,这将阻止用户运行计划任务。