PDA

View Full Version : مانیتور کردن سرویس هایه ویندوز



Mask
شنبه 29 خرداد 1389, 18:28 عصر
با سلام
چطوری باید سرویسهای ویندوز رو مانیتور کرد.
یعنی بفهمیم چه سرویسی نصب شد و چه سرویسی استارت و چه سرویسی استوپ شد.
برا این کار برنامه دارم.
اما خودم میخام بنویسم.
ممنون.

majid2230
شنبه 29 خرداد 1389, 18:46 عصر
شما می تونید از کامند sc در cmd استفاده کنید .

__Genius__
شنبه 29 خرداد 1389, 18:49 عصر
سلام .

http://www.online-admin.com/howtozone/service_monitor.html

vcldeveloper
شنبه 29 خرداد 1389, 20:16 عصر
یک راهش استفاده از WMI هست.

مصطفی ساتکی
شنبه 29 خرداد 1389, 21:41 عصر
این کد فکر کنم به دردتون بخوره


const
SERVICE_KERNEL_DRIVER = $00000001;
SERVICE_FILE_SYSTEM_DRIVER = $00000002;
SERVICE_ADAPTER = $00000004;
SERVICE_RECOGNIZER_DRIVER = $00000008;

SERVICE_DRIVER =
(SERVICE_KERNEL_DRIVER or
SERVICE_FILE_SYSTEM_DRIVER or
SERVICE_RECOGNIZER_DRIVER);

SERVICE_WIN32_OWN_PROCESS = $00000010;
SERVICE_WIN32_SHARE_PROCESS = $00000020;
SERVICE_WIN32 =
(SERVICE_WIN32_OWN_PROCESS or
SERVICE_WIN32_SHARE_PROCESS);

SERVICE_INTERACTIVE_PROCESS = $00000100;

SERVICE_TYPE_ALL =
(SERVICE_WIN32 or
SERVICE_ADAPTER or
SERVICE_DRIVER or
SERVICE_INTERACTIVE_PROCESS);

uses WinSvc;


function ServiceGetList(
sMachine : string;
dwServiceType,
dwServiceState : DWord;
slServicesList : TStrings )
: boolean;
const
cnMaxServices = 4096;

type
TSvcA = array[0..cnMaxServices]
of TEnumServiceStatus;
PSvcA = ^TSvcA;

var
j : integer;

schm : SC_Handle;

nBytesNeeded,

nServices,
nResumeHandle : DWord;

ssa : PSvcA;
begin
Result := false;

schm := OpenSCManager(
PChar(sMachine),
Nil,
SC_MANAGER_ALL_ACCESS);

if(schm > 0)then
begin
nResumeHandle := 0;

New(ssa);

EnumServicesStatus(
schm,
dwServiceType,
dwServiceState,
ssa^[0],
SizeOf(ssa^),
nBytesNeeded,
nServices,
nResumeHandle );

for j := 0 to nServices-1 do
begin
slServicesList.
Add( StrPas(
ssa^[j].lpDisplayName ) );
end;

Result := true;

Dispose(ssa);

// close service control
// manager handle
CloseServiceHandle(schm);
end;
end;

ServiceGetList( '',
SERVICE_WIN32,
SERVICE_STATE_ALL,
ListBox1.Items )