| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 14 - Перечисление сервисов NT EnumServicesStatus.

В Windows NT есть понятие сервисов. Сервис - это исполняемый объект. Простым языком это модуль или драйвер, но сделанный так, что его работой можно управлять - запускать и останавливать в любое время. Посмотреть существующие сервисы можно здесь - Control Panel -> Services.

Давайте попробуем создать свою программу, которая будет перечислять сервисы.

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

#define SIZE_BUF 4096

void main()
{
ENUM_SERVICE_STATUS			Status[SIZE_BUF]; 
DWORD   Size				= sizeof(Status); 
DWORD   Needed				= 0; 
DWORD   Return	          		= 0; 
DWORD   Handle              		= 0; 
SC_HANDLE Manager; 

Manager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS); 

if (Manager!=NULL) 
{
 if (EnumServicesStatus(Manager,SERVICE_WIN32,SERVICE_ACTIVE,
	 (LPENUM_SERVICE_STATUS)&Status,Size,&Needed,&Return,&Handle)) 
 {
  for (unsigned int x=0; x < Return; x++) 
	cout << Status[x].lpServiceName << endl;
 }
 else cout << "Error Open Manager " << endl;
}
else cout << "Error enum Services" << endl;

}
Давайте попробуем разобраться. Первая функция, которую мы вызываем это OpenSCManager. Эта функция устанавливает связь с менеджером NT ответственным за работу с сервисами. Вот она
SC_HANDLE OpenSCManager(
  LPCTSTR lpMachineName,   // имя машина
  LPCTSTR lpDatabaseName,  // имя менеджера
  DWORD dwDesiredAccess   //  тип доступа
);
Как видите некоторые значения можно устанавливать в NULL. Функция EnumServicesStatus перебирает все сервисы и заносит их в буфер. Но нужно указать менеджера, тип сервисов, буфер, размер буфера и так далее.

А вот результат работы.

14.gif (6174 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz