Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

114 lines
2.4 KiB

/*++
Copyright (c) 2001 Microsoft Corporation
Module Name:
logonsess.cxx
Abstract:
logonsess
Author:
Larry Zhu (LZhu) January 1, 2002 Created
Environment:
User Mode
Revision History:
--*/
#include "precomp.hxx"
#pragma hdrstop
#include "logonsess.hxx"
VOID
Usage(
IN PCSTR pszApp
)
{
DebugPrintf(SSPI_ERROR, "\n\nUsage: %s -l<LogonId.LowPart> -h<LogonId.HighPart>\n\n", pszApp);
exit(-1);
}
VOID __cdecl
main(
IN INT argc,
IN PSTR argv[]
)
{
TNtStatus Status = STATUS_SUCCESS;
HANDLE LogonHandle = NULL;
ULONG PackageId = -1;
LUID LogonId = {0};
LUID* pLogonSessionList = &LogonId;
ULONG cLogonSessionCount = 0;
DebugLogOpen("logonsess.exe", SSPI_LOG | SSPI_WARN | SSPI_ERROR);
for (INT i = 1; NT_SUCCESS(Status) && (i < argc); i++)
{
if ((*argv[i] == '-') || (*argv[i] == '/'))
{
switch (argv[i][1])
{
case 'l':
cLogonSessionCount = 1;
LogonId.LowPart = strtol(argv[i] + 2, NULL, 0);
break;
case 'h':
cLogonSessionCount = 1;
LogonId.HighPart = strtol(argv[i] + 2, NULL, 0);
break;
case '?':
default:
Usage(argv[0]);
break;
}
}
else
{
Usage(argv[0]);
}
}
if (cLogonSessionCount == 0)
{
Status DBGCHK = LsaEnumerateLogonSessions(&cLogonSessionCount, &pLogonSessionList);
}
for (UINT i = 0; (i < cLogonSessionCount) && NT_SUCCESS(Status); i++)
{
PSECURITY_LOGON_SESSION_DATA pLogonSessionData = NULL;
DebugPrintf(SSPI_LOG, "*********Getting Logonsession data for %#x:%#x**********\n", pLogonSessionList[i].HighPart, pLogonSessionList[i].LowPart);
Status DBGCHK = LsaGetLogonSessionData(pLogonSessionList + i, &pLogonSessionData);
if (NT_SUCCESS(Status))
{
DebugPrintLogonSessionData(SSPI_LOG, pLogonSessionData);
}
if (pLogonSessionData)
{
LsaFreeReturnBuffer(pLogonSessionData);
}
}
if (pLogonSessionList != &LogonId)
{
LsaFreeReturnBuffer(pLogonSessionList);
}
DebugLogClose();
}