delphi
uses ComObj, ActiveX; function SrvExists(Name: String): Boolean; var ScriptControl: OleVariant; WmiService: OleVariant; Items: IUnknown; Enum: IEnumVariant; Fetched: Cardinal; Item: OleVariant; begin Result:= FALSE; ScriptControl:= CreateOleObject('ScriptControl'); ScriptControl.Language := 'VBScript'; WmiService:= ScriptControl.Eval('GetObject("winmgmts:\\.\root\cimv2")'); Items:= WMIService.ExecQuery('SELECT * FROM Win32_Service Where Name=' + QuotedStr(Name))._NewEnum; Enum:= Items as IEnumVariant; Enum.Reset; Enum.Next(1, Item, Fetched); while Fetched = 1 do begin try try Result:= TRUE; Exit; finally Enum.Next(1, Item, Fetched); end; except end; end; end; function SrvStart(Name: String): Boolean; var ScriptControl: OleVariant; WmiService: OleVariant; Items: IUnknown; Enum: IEnumVariant; Fetched: Cardinal; Item: OleVariant; begin Result:= FALSE; ScriptControl:= CreateOleObject('ScriptControl'); ScriptControl.Language := 'VBScript'; WmiService:= ScriptControl.Eval('GetObject("winmgmts:\\.\root\cimv2")'); Items:= WMIService.ExecQuery('SELECT * FROM Win32_Service Where Name=' + QuotedStr(Name))._NewEnum; Enum:= Items as IEnumVariant; Enum.Reset; Enum.Next(1, Item, Fetched); while Fetched = 1 do begin try try Item.StartService; Result:= TRUE; Exit; finally Enum.Next(1, Item, Fetched); end; except end; end; end; function SrvStop(Name: String): Boolean; var ScriptControl: OleVariant; WmiService: OleVariant; Items: IUnknown; Enum: IEnumVariant; Fetched: Cardinal; Item: OleVariant; begin Result:= FALSE; ScriptControl:= CreateOleObject('ScriptControl'); ScriptControl.Language := 'VBScript'; WmiService:= ScriptControl.Eval('GetObject("winmgmts:\\.\root\cimv2")'); Items:= WMIService.ExecQuery('SELECT * FROM Win32_Service Where Name=' + QuotedStr(Name))._NewEnum; Enum:= Items as IEnumVariant; Enum.Reset; Enum.Next(1, Item, Fetched); while Fetched = 1 do begin try try Item.StopService; Result:= TRUE; Exit; finally Enum.Next(1, Item, Fetched); end; except end; end; end; function SrvDelete(Name: String): Boolean; var ScriptControl: OleVariant; WmiService: OleVariant; Items: IUnknown; Enum: IEnumVariant; Fetched: Cardinal; Item: OleVariant; begin Result:= FALSE; ScriptControl:= CreateOleObject('ScriptControl'); ScriptControl.Language := 'VBScript'; WmiService:= ScriptControl.Eval('GetObject("winmgmts:\\.\root\cimv2")'); Items:= WMIService.ExecQuery('SELECT * FROM Win32_Service Where Name=' + QuotedStr(Name))._NewEnum; Enum:= Items as IEnumVariant; Enum.Reset; Enum.Next(1, Item, Fetched); while Fetched = 1 do begin try try Item.Delete; Result:= TRUE; Exit; finally Enum.Next(1, Item, Fetched); end; except end; end; end;
Saludos