1
제 소프트웨어가 일괄 작업 (LOGON32_LOGON_BATCH
)이 대화식으로 실행되는 경우 (LOGON32_LOGON_INTERACTIVE
)를 적어도 구별하려고합니다.실행중인 프로세스의 로그온 유형을 어떻게 조회 할 수 있습니까?
제 소프트웨어가 일괄 작업 (LOGON32_LOGON_BATCH
)이 대화식으로 실행되는 경우 (LOGON32_LOGON_INTERACTIVE
)를 적어도 구별하려고합니다.실행중인 프로세스의 로그온 유형을 어떻게 조회 할 수 있습니까?
HANDLE hToken;
// Open the current process's token
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
{
// Get the token statistics, which include the logon session id
TOKEN_STATISTICS stats;
DWORD length;
if (GetTokenInformation(hToken, TokenStatistics, &stats, sizeof(stats), &length))
{
// Get data about the logon session, which includes the logon type
PSECURITY_LOGON_SESSION_DATA pData;
if (LsaGetLogonSessionData(&stats.AuthenticationId, &pData) == 0)
{
// From SECURITY_LOGON_TYPE enumeration
switch (pData->LogonType)
{
case Interactive:
wprintf(L"Interactive\n");
break;
case Batch:
wprintf(L"Batch\n");
break;
default:
wprintf(L"Other: %i\n", pData->LogonType);
break;
}
LsaFreeReturnBuffer(pData);
}
}
CloseHandle(hToken);
}
구조에 Lsa API, 감사합니다! – OnTheFly