Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Процессы и их handle

6.5K
20 октября 2005 года
SkyHawk
43 / / 20.10.2005
Народ! Доброе время суток!
Подскажите. Как можно узнать handle всех процессов, существующих в системе?
Буду с нетерпением ждать ответов и советов.
1.8K
21 октября 2005 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by SkyHawk
Народ! Доброе время суток!
Подскажите. Как можно узнать handle всех процессов, существующих в системе?
Буду с нетерпением ждать ответов и советов.



Код:
#include <tlhelp32.h>

HANDLE hSnapshot;
PROCESSENTRY32 pe;
HANDLE hProcess;

hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
    //не срослось;

memset(&pe, 0, sizeof(pe));
pe.dwSize = sizeof(pe);
if (!Process32First(hSnapshot, &pe))
{
    CloseHandle(hSnapshot);
    //опять не срослось;
}

do
{
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pe.th32ProcessID);
    //hProcess - HANDLE процесса
}
while (Process32Next(hSnapshot, &pe));
3.7K
21 октября 2005 года
bioflash
169 / / 01.10.2005
Цитата:
Originally posted by SkyHawk
Народ! Доброе время суток!
Подскажите. Как можно узнать handle всех процессов, существующих в системе?
Буду с нетерпением ждать ответов и советов.



Также есть PdhEnumObjectItems.

6.5K
25 октября 2005 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by _const_
Код:
#include <tlhelp32.h>

HANDLE hSnapshot;
PROCESSENTRY32 pe;
HANDLE hProcess;

hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot == INVALID_HANDLE_VALUE)
    //не срослось;

memset(&pe, 0, sizeof(pe));
pe.dwSize = sizeof(pe);
if (!Process32First(hSnapshot, &pe))
{
    CloseHandle(hSnapshot);
    //опять не срослось;
}

do
{
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pe.th32ProcessID);
    //hProcess - HANDLE процесса
}
while (Process32Next(hSnapshot, &pe));

6.5K
25 октября 2005 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by SkyHawk


Спасибо за помощь. Разобрался. Правда, возникла одна загвоздка. Хэндлы системных процессов не определяются. Подскажите, почему, и как побороть данную неприятность.

292
25 октября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by SkyHawk
Спасибо за помощь. Разобрался. Правда, возникла одна загвоздка. Хэндлы системных процессов не определяются. Подскажите, почему, и как побороть данную неприятность.


Чтобы получить все хендлы надо иметь соответствующие привелегии (почитай в МСДН). Вот собствено что надо замутить чтобы их получить

 
Код:
HANDLE hToken;
    if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        TOKEN_PRIVILEGES tp;
        tp.PrivilegeCount = 1;
        LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
        tp.Privileges[0].Attributes = true? SE_PRIVILEGE_ENABLED: 0;
        AdjustTokenPrivileges(hToken, false, &tp, sizeof(tp), NULL, NULL);
        CloseHandle(hToken);
    }
6.5K
25 октября 2005 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by Matush
Чтобы получить все хендлы надо иметь соответствующие привелегии (почитай в МСДН). Вот собствено что надо замутить чтобы их получить
 
Код:
HANDLE hToken;
    if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        TOKEN_PRIVILEGES tp;
        tp.PrivilegeCount = 1;
        LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
        tp.Privileges[0].Attributes = true? SE_PRIVILEGE_ENABLED: 0;
        AdjustTokenPrivileges(hToken, false, &tp, sizeof(tp), NULL, NULL);
        CloseHandle(hToken);
    }

6.5K
25 октября 2005 года
SkyHawk
43 / / 20.10.2005
Извиняюсь...

Каюсь, но Си не знаю.
Можно на Делфях?
292
25 октября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by SkyHawk
Извиняюсь...

Каюсь, но Си не знаю.
Можно на Делфях?


Делфи не секу, но АПИ оно и в африке АПИ. Думаю для Тебя не будет сильной проблемой реализовать это код на делфи.

6.5K
26 октября 2005 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by Matush
Делфи не секу, но АПИ оно и в африке АПИ. Думаю для Тебя не будет сильной проблемой реализовать это код на делфи.



Ну что-же. Попробую. Спасибо. Скоро сообщу, как получится.

14K
09 ноября 2005 года
Ember
7 / / 09.11.2005
Цитата:
Originally posted by SkyHawk
Спасибо за помощь. Разобрался. Правда, возникла одна загвоздка. Хэндлы системных процессов не определяются. Подскажите, почему, и как побороть данную неприятность.



А ты не думал, что некоторые хендлы могут указывать не только на процесс,а и на службу??!!

1.8K
09 ноября 2005 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by Ember
А ты не думал, что некоторые хендлы могут указывать не только на процесс,а и на службу??!!



А что, служба процессом не является?:)

14K
10 ноября 2005 года
Ember
7 / / 09.11.2005
Цитата:
Originally posted by _const_
А что, служба процессом не является?:)



и то верно :)

6.5K
07 декабря 2005 года
SkyHawk
43 / / 20.10.2005
Цитата:
Originally posted by Ember
и то верно :)



Кстати, неплохая идея. Надо разобраться...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог