Получить идентификатор сессии пользователя по PID
От: Canavaro Россия  
Дата: 12.09.03 11:40
Оценка:
получаю указатель на процесс с помощью PsGetCurrentProcessId() (он используется только на IRQL PASSIVE_LEVEL), подскажите как мне узнать идентификатор сесиии пользователя, корректно ли использовать в этом контексте ProcessIdToSessionId() ?
Re: Получить идентификатор сессии пользователя по PID
От: Valerio Россия linkedin.com/in/boronin
Дата: 13.09.03 04:31
Оценка:
Здравствуйте, Canavaro, Вы писали:

C>получаю указатель на процесс с помощью PsGetCurrentProcessId() (он используется только на IRQL PASSIVE_LEVEL), подскажите как мне узнать идентификатор сесиии пользователя, корректно ли использовать в этом контексте ProcessIdToSessionId() ?


ProcessIdToSessionId в реальных проектах я не использовал, а вот сессию получить можно попробовать через NtQueryInformationProcess с классом PROCESS_SESSION_INFORMATION
... << RSDN@Home 1.1 beta 2 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: Получить идентификатор сессии пользователя по PID
От: Canavaro Россия  
Дата: 18.09.03 07:39
Оценка:
Здравствуйте, Valerio, Вы писали:

>>можно попробовать через NtQueryInformationProcess с классом PROCESS_SESSION_INFORMATION


а где бы почитать про этот класс, а то если я првильно понял это недокуменированные возможности, описанные только в соответствующей книге, доступа к которой у меня пока нет
Re[3]: Получить идентификатор сессии пользователя по PID
От: Valerio Россия linkedin.com/in/boronin
Дата: 18.09.03 13:41
Оценка:
Здравствуйте, Canavaro, Вы писали:

C>Здравствуйте, Valerio, Вы писали:


>>>можно попробовать через NtQueryInformationProcess с классом PROCESS_SESSION_INFORMATION


C>а где бы почитать про этот класс, а то если я првильно понял это недокуменированные возможности, описанные только в соответствующей книге, доступа к которой у меня пока нет

думаю это вполне документированные уже возможности
в MSDN 2003 это уже очень даже документировано официально —
see Platform SDK: DLLs, Processes, and Threads
NtQueryInformationProcess

вот что я вижу в ntddk.h для 2000й

#define NtCurrentProcess() ( (HANDLE) -1 )
NTSYSCALLAPI
NTSTATUS
NTAPI
NtQueryInformationProcess(
IN HANDLE ProcessHandle,
IN PROCESSINFOCLASS ProcessInformationClass,
OUT PVOID ProcessInformation,
IN ULONG ProcessInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
#define NtCurrentThread() ( (HANDLE) -2 )

//
// Multi-User Session specific Process Information
// NtQueryInformationProcess using ProcessSessionInformation
//

typedef struct _PROCESS_SESSION_INFORMATION {
ULONG SessionId;
} PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;


этого вполне достаточно должно быть

Нужно получить хэндл на процесс и спросить у NtQueryInformationProcess с ProcessSessionInformation и PROCESS_SESSION_INFORMATIONв качестве ProcessInformationClass и ProcessInformation. NtCurrentProcess в качестве хэндла может подойти или поиск по сайту (в asm & winapi форумах) поможет — это часто обсуждалось
... << RSDN@Home 1.1 beta 2 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.