Форум: "Прочее";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
ВнизКак получить список сервисов... Найти похожие ветки
← →
Ломброзо © (2006-03-13 22:03) [0]... которые могут быть запущены командой net start? Эмпирическим путем научился запускать из командной строки w3svc (IIS) и mysql; интересуют также названия сервисов Oracle и MSSQL
← →
Джо © (2006-03-13 22:04) [1]В оснастке Services (Службы) дважды счелкаешь на названии службы и видишь полную коммандную строку. Или это не то?
← →
palva © (2006-03-13 22:09) [2]Если программным образом, то искать где-то в реестре. Там же можно и прописать программу как сервис.
← →
Sergey Masloff (2006-03-13 22:18) [3]HKLM\SYSTEM\CurrentControlSet\Services
для MSSQL например MSSQLSERVER ;-)))
← →
Ломброзо © (2006-03-13 22:22) [4]Sergey Masloff (13.03.06 22:18) [3]
O! Спасибо
← →
Eraser © (2006-03-13 22:39) [5]
> Ломброзо © (13.03.06 22:03)
procedure TfmMain.GetServiceList(AList: TStrings);
var
hSC: THandle;
pcbBytesNeeded, lpServicesReturned, lpResumeHandle,
cbBufSize: DWORD;
pStatus, pWork: PEnumServiceStatus;
i: integer;
s1: string;
sl1: TStringList;
begin
hSC := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE);
if hSC = 0 then
exit;
try
AList.Clear;
cbBufSize := 0;
lpResumeHandle := 0;
EnumServicesStatus(hSC,
SERVICE_WIN32,
SERVICE_STATE_ALL,
pStatus^,
cbBufSize,
pcbBytesNeeded,
lpServicesReturned,
lpResumeHandle);
pStatus := AllocMem(pcbBytesNeeded);
sl1 := TStringList.Create;
try
sl1.Delimiter := ";";
cbBufSize := pcbBytesNeeded;
EnumServicesStatus(hSC,
SERVICE_WIN32,
SERVICE_STATE_ALL,
pStatus^,
cbBufSize,
pcbBytesNeeded,
lpServicesReturned,
lpResumeHandle);
pWork := pStatus;
for i := 1 to lpServicesReturned do
begin
case pWork^.ServiceStatus.dwCurrentState of
SERVICE_CONTINUE_PENDING: s1 := "Wait...";
SERVICE_PAUSE_PENDING: s1 := "Pausing";
SERVICE_PAUSED: s1 := "Paused";
SERVICE_RUNNING: s1 := "Working";
SERVICE_START_PENDING: s1 := "Starting";
SERVICE_STOP_PENDING: s1 := "Stoping";
SERVICE_STOPPED: s1 := "Stoped";
end;
sl1.Clear;
sl1.Add(pWork^.lpDisplayName +
" (" + pWork^.lpServiceName + ")");
sl1.Add(s1);
AList.Add(sl1.DelimitedText);
inc(pWork);
end;
finally
if Assigned(pStatus) then
begin
FreeMem(pStatus,pcbBytesNeeded);
end;
sl1.Free;
end;
finally
CloseServiceHandle(hSC);
end;
end;
← →
Eraser © (2006-03-13 22:40) [6]
pWork^.lpServiceName
- net имя.
← →
Ломброзо © (2006-03-13 23:50) [7]Eraser ©
Спасибо за труд :) Подобный код есть и в MSDN :)
Я интересовался с той целью, что мой ноутбук для девелопмента слабоват, поэтому для того, чтобы всякий раз не лазить в Service Manager, я решил смастерить десяток bat-файликов, останавливающих и запускающих взаимосвязанные сервисы - для оптимизации так сказать.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c