Форум: "Система";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
ВнизСписок служб W2K, XP Найти похожие ветки
← →
Babay (2003-11-25 10:32) [0]Подскажите как получить список служб и их состояние (работает/стоит) на своем или другом компьютере в сети, если я имею на них(компьютерах) соответствующие права (ну в смысле админ).
← →
Digitman (2003-11-25 10:58) [1]примерный алгоритм перечисления имен зарегистрированных служб
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 даст тебе инф-цию о прочих атрибутах перечисляемых служб
← →
Digitman (2003-11-25 11:02) [2]это - на лок.компьютере ...
на удаленном - см. параметры вызова OpenSCManager()
← →
Babay (2003-11-25 11:44) [3]Спасибо то что нужно.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.007 c