Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список служб W2K, XP [D7, Win2k, WinXP]


Babay ©   (2003-11-25 10:32:00) 

Подскажите как получить список служб и их состояние (работает/стоит) на своем или другом компьютере в сети, если я имею на них(компьютерах) соответствующие права (ну в смысле админ).


Babay   (2003-11-25 11:44:00) [1]

Спасибо то что нужно.


Digitman   (2003-11-25 11:02:00) [2]

это - на лок.компьютере ...
на удаленном - см. параметры вызова OpenSCManager()


Digitman   (2003-11-25 10:58:00) [3]

примерный алгоритм перечисления имен зарегистрированных служб


procedure TForm1.Button2Click(Sender: TObject);
var
hSM: THandle;
hSvc: THandle;
hSDBLock: Pointer;
EnumInfo, p: PEnumServiceStatus;
EnumState: Boolean;
BytesNeeded: Cardinal;
EntriesReturned: Cardinal;
NextEntry: Cardinal;
i: Integer;
begin
hSM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS or GENERIC_READ or GENERIC_WRITE);
Win32Check(hSM <> 0);
try
hSDBLock := LockServiceDatabase(hSM);
Win32Check(hSDBLock <> nil);
try

EnumInfo := nil;
NextEntry := 0;
memo1.Clear;
EnumState := EnumServicesStatus(hSM,
SERVICE_WIN32 or SERVICE_DRIVER,
SERVICE_ACTIVE or SERVICE_INACTIVE,
EnumInfo^,
0, //SizeOf(EnumInfo),
BytesNeeded,
EntriesReturned,
NextEntry
);
if GetLastError <> ERROR_MORE_DATA then
RaiseLastWin32Error
else
begin
GetMem(EnumInfo, BytesNeeded);
try
Win32Check(EnumServicesStatus(hSM,
SERVICE_WIN32 or SERVICE_DRIVER,
SERVICE_ACTIVE or SERVICE_INACTIVE,
EnumInfo^,
BytesNeeded,
BytesNeeded,
EntriesReturned,
NextEntry
));

p := EnumInfo;
for i := 0 to EntriesReturned - 1 do
begin
memo1.Lines.Add(p.lpServiceName);
inc(p);
end;
finally
FreeMem(EnumInfo);
end;
end;

finally
UnlockServiceDatabase(hSDBLock);
end;
finally
CloseServiceHandle(hSM);
end;
end;


структура PEnumServiceStatus даст тебе инф-цию о прочих атрибутах перечисляемых служб


Наверх

Титульная страница Поиск, карта сайта Написать письмо