Enabling/Disable a service on MSCONFIG using VB 6.0 , 500 Points!

Hi, take a moment to my example , --> Click the Start button , then click "run" and open the file "msconfig" , then click on Services, there you should see many applications , now what i need to do is ... to find a way so i can Disable/Enable a service using visual basic 6.0 .

Thanks
KingSencatAsked:
Who is Participating?
 
Jeroen RosinkConnect With a Mentor Software testing consultantCommented:
perhaps this works also in VB

http://msdn2.microsoft.com/en-us/library/aa394602.aspx

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery _
 ("Select * from Win32_Service Where Name ='Alerter'") 'Enter here the service Name
For Each objService in colListOfServices
    objService.StartService()
    Wscript.Echo "Started Alerter service"
Next


In addition to stop a service use instead of StartService()
StopService()

I hope this works for you
regards,
Jeroen
0
 
Anthony2000Commented:
Question was asked before, here is an answer:

http://www.experts-exchange.com/Programming/Misc/Q_21050127.html
0
 
PhilAICommented:
I'd start looking at the ControlService API:
http://msdn2.microsoft.com/en-us/library/ms682108.aspx

Not used this myself, but I've heard it should allow you to stop and start services and this should help you:
http://www.techbytes.ca/techbyte16.html
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
KingSencatAuthor Commented:
Anthony2000: Doesn't help too much , can you paste me here a sample code ?
0
 
KingSencatAuthor Commented:
I just need a code so i can STOP A SERVICE and RUN A SERVICE , this is all what i need , please help me
0
 
Anthony2000Commented:
KingSencat, I found an example on the web that uses the service control manager api:
I would test if for you, but I don't have VB6 on this machine. Its on my notebook at work.

In summary:


this is the function that you will call (from below):

dim result as boolean

result = ServiceCommand("service name",  SERVICE_CONTROL_STOP) ' disable service or stop it

result = ServiceCommand("service name",  SERVICE_CONTROL_START) ' enable service or start it

Let me know if this worked.








Private Type SERVICE_STATUS
dwServiceType As Long
dwCurrentState As Long
dwControlsAccepted As Long
dwWin32ExitCode As Long
dwServiceSpecificExitCode As Long
dwCheckPoint As Long
dwWaitHint As Long
End Type

Private Declare Function OpenSCManager Lib "advapi32.dll" Alias _
"OpenSCManagerA" (ByVal lpMachineName As String, _
ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long
Private Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject _
As Long) As Long
Private Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" _
(ByVal hSCManager As Long, ByVal lpServiceName As String, _
ByVal dwDesiredAccess As Long) As Long
Private Declare Function StartService Lib "advapi32.dll" Alias "StartServiceA" _
(ByVal hService As Long, ByVal dwNumServiceArgs As Long, _
ByVal lpServiceArgVectors As Long) As Long
Private Declare Function ControlService Lib "advapi32.dll" (ByVal hService As _
Long, ByVal dwControl As Long, lpServiceStatus As SERVICE_STATUS) As Long

Const GENERIC_EXECUTE = &H20000000
Const SERVICE_CONTROL_STOP = 1
Const SERVICE_CONTROL_PAUSE = 2
Const SERVICE_CONTROL_CONTINUE = 3

' start/stop/pause/continue a service
' SERVICENAME is the internal name of the service
' COMMAND can be 0=Start, 1=Stop, 2=Pause, 3=Continue
'
' returns True if successful, False otherwise
' if any error, call Err.LastDLLError for more information

Function ServiceCommand(ByVal ServiceName As String, ByVal command As Long) As _
Boolean
Dim hSCM As Long
Dim hService As Long
Dim res As Long
Dim lpServiceStatus As SERVICE_STATUS

' first, check the command
If command < 0 Or command > 3 Then Err.Raise 5

' open the connection to Service Control Manager, exit if error
hSCM = OpenSCManager(vbNullString, vbNullString, GENERIC_EXECUTE)
If hSCM = 0 Then Exit Function



' open the given service, exit if error
hService = OpenService(hSCM, ServiceName, GENERIC_EXECUTE)
If hService = 0 Then GoTo CleanUp

' start the service
Select Case command
Case 0
' to start a service you must use StartService
res = StartService(hService, 0, 0)
Case SERVICE_CONTROL_STOP, SERVICE_CONTROL_PAUSE, _
SERVICE_CONTROL_CONTINUE
' these commands use ControlService API
' (pass a NULL pointer because no result is expected)
res = ControlService(hService, command, lpServiceStatus)
End Select
If res = 0 Then GoTo CleanUp

' return success
ServiceCommand = True

CleanUp:
If hService Then CloseServiceHandle hService
' close the SCM
CloseServiceHandle hSCM

End Function
0
 
RobSampsonCommented:
@roos01 and KingSencat,

that code will work (and is probably the simplest), as long as you have a project reference to the Microsoft Scripting Runtime Library added.

Regards,

Rob.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.