Форум: "WinAPI";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизФильтрация процессов от системных Найти похожие ветки
← →
Aragon © (2006-06-18 19:31) [0]Hi! Подскажите, как можно узнать является ли процесс системным. Делал так: получаю все аткивные процессы в системе, если от процесса можно получить какую-нибудь инфу, то простой процесс, иначе возникнет ошибка доступа - системный. svchost, lsass, services и т.д. проходят такой фильтр.
По папке System32 тоже нехорошо, т.к. пользователь может от туда стартовать свое приложение.
Как реализовать фильтр от системных процессов.
← →
Сергей М. © (2006-06-19 08:36) [1]
> если от процесса можно получить какую-нибудь инфу
Это как ?
← →
Игорь Шевченко © (2006-06-19 10:22) [2]
> Подскажите, как можно узнать является ли процесс системнымtype
ZString = array[0..1024] of char;
function SIDToName (const SID: PSID): string;
var
Use : SID_NAME_USE;
DomainName : ZString;
DomainNameLength : DWORD;
Name : ZString;
NameLength : DWORD;
begin
if not LookupAccountSid(nil, SID, Name, NameLength, DomainName,
DomainNameLength, Use) then
Result := "***"
else
Result := Name;
end;procedure TfMain.LookupProcessOwner(AProcess: THSNtProcessInfo);
var
UserName: string;
AccessToken : THandle;
Info : PSIDANDATTRIBUTES;
ReturnLength : DWORD;
ProcessHandle: THandle;
begin
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, false,
AProcess.Info.ProcessId);
if ProcessHandle = 0 then
Exit;
try
if not OpenProcessToken(ProcessHandle, TOKEN_QUERY, AccessToken) then
Exit;
GetMem (Info, 4096);
try
Win32Check(GetTokenInformation(AccessToken, TokenUser, Info, 4096,
ReturnLength));
UserName := SidToName(Info^.Sid);
finally
FreeMem(Info);
CloseHandle(AccessToken);
end;
finally
CloseHandle(ProcessHandle);
end;
....
end;
По username и фильтровать
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c