n0name Не совсем правильно задан вопрос, и даже не знаю как правильнее его задать, но в этом определении я бы сказал, что winlogon/lsass запущены системой, а fasmw, iexplore пользователем.
По юзеру определять - если текущий, то пользователь иначе система. У всех сервисов или системных процессов пользователь - "NT AUTHORITY\SYSTEM" или "NT AUTHORITY\LOCAL SERVICE". Хотя конечно я осознаю, что сервис можно запустить с правами любой учотки.
Сначала получаешь SID процесса. Потом LookupAccountSid P.S. Поиск рулит http://www.wasm.ru/forum/viewtopic.php?id=16080
Mental_Mirror если постараться, то в >=XP можно. EPROCESS убитого процесса не удаляется почемуто, а только помечается как удаленный (EPROCESS->ProcessExiting = 1), но остается в двусвязанном списке PsActiveProcessList. Однако, NtQuerySystemInformation исключает такие процессы из перечисления, когда возвращает список процессов. Но фактически, объект существует.
Получается так Код (Text): hToken DWORD ? buf db 1024 dup(?) tu_size DWORD ? sch_accountname db 255 dup(?) sch_domainname db 255 dup(?) sid_name_use db 255 dup(?) invoke GetCurrentProcess mov ecx,eax invoke OpenProcessToken,ecx,TOKEN_QUERY,addr hToken or eax,eax jz error invoke GetTokenInformation,hToken,TokenUser,addr buf,1024,addr tu_size or eax,eax jz error invoke LookupAccountSid,0,addr buf,addr sch_accountname,sizeof sch_accountname,addr sch_domainname,sizeof sch_domainname,addr sid_name_use error: invoke CloseHandle,hToken invoke MessageBox,hwnd,addr sch_accountname,0,MB_OK Но вылетает ошибка. В чём дело?
vg BOOL LookupAccountSid( LPCTSTR lpSystemName, // address of string for system name PSID Sid, // address of security identifier LPTSTR Name, // address of string for account name LPDWORD cbName, // address of size account string LPTSTR ReferencedDomainName, // address of string for referenced domain LPDWORD cbReferencedDomainName, // address of size domain string PSID_NAME_USE peUse // address of structure for SID type ); mov tu_size,25 invoke LookupAccountSid,0,buf.User.Sid,addr sch_accountname,addr tu_size,addr sch_domainname,addr tu_size,addr sid_name_use
Спасибо, работает. Только вместо buf db 1024 dup(?) нужно buf TOKEN_USER <>. И ещё, зачем mov tu_size,25?