Hello,
I need to make a remote service interactive/non-interactiv
e. The service has already been installed just need to be able to change between int/non-int.
Here's my current service mod
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SERVICE_QUERY_CONFIG = &H1
Public Const SERVICE_QUERY_STATUS = &H4
Public Const SERVICE_CHANGE_CONFIG = &H2
Public Const SERVICE_ENUMERATE_DEPENDEN
TS = &H8
Public Const SERVICE_START = &H10
Public Const SERVICE_STOP = &H20
Public Const SERVICE_PAUSE_CONTINUE = &H40
Public Const SERVICE_INTERROGATE = &H80
Public Const SERVICE_USER_DEFINED_CONTR
OL = &H100
Public Const SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SERVICE_QUERY_CONFIG Or SERVICE_CHANGE_CONFIG Or SERVICE_QUERY_STATUS Or SERVICE_ENUMERATE_DEPENDEN
TS Or SERVICE_START Or SERVICE_STOP Or SERVICE_PAUSE_CONTINUE Or SERVICE_INTERROGATE Or SERVICE_USER_DEFINED_CONTR
OL)
Public Const SC_MANAGER_CONNECT = 1
Public Const SC_MANAGER_CREATE_SERVICE = &H2
Public Const SC_MANAGER_ENUMERATE_SERVI
CE = &H4
Public Const SC_MANAGER_LOCK = &H8
Public Const SC_MANAGER_QUERY_LOCK_STAT
US = &H10
Public Const SC_MANAGER_MODIFY_BOOT_CON
FIG = &H20
Public Const SC_MANAGER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SC_MANAGER_CONNECT Or SC_MANAGER_CREATE_SERVICE Or SC_MANAGER_ENUMERATE_SERVI
CE Or SC_MANAGER_LOCK Or SC_MANAGER_QUERY_LOCK_STAT
US Or SC_MANAGER_MODIFY_BOOT_CON
FIG)
Public Const SERVICE_ERROR_IGNORE = &H0
Public Const SERVICE_ERROR_NORMAL = &H1
Public Const SERVICE_ERROR_SEVERE = &H2
Public Const SERVICE_ERROR_CRITICAL = &H3
Public 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
Public Declare Function OpenSCManager Lib "advapi32.dll" Alias "OpenSCManagerA" (ByVal lpMachineName As String, ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long
Public Declare Function setservicestatus Lib "advapi32.dll" Alias "SetServiceStatus" (ByVal hServiceStatus As Long, lpServiceStatus As SERVICE_STATUS) As Long
Public Declare Function OpenService Lib "advapi32.dll" Alias "OpenServiceA" (ByVal hSCManager As Long, ByVal lpServiceName As String, ByVal dwDesiredAccess As Long) As Long
Public Declare Function ChangeServiceConfig Lib "advapi32.dll" Alias "ChangeServiceConfigA" (ByVal hService As Long, ByVal dwServiceType As Long, ByVal dwStartType As Long, ByVal dwErrorControl As Long, ByVal lpBinaryPathName As String, ByVal lpLoadOrderGroup As String, lpdwTagId As Long, ByVal lpDependencies As String, ByVal lpServiceStartName As String, ByVal lpPassword As String, ByVal lpDisplayName As String) As Long
Public Declare Function CloseServiceHandle Lib "advapi32.dll" (ByVal hSCObject As Long) As Long
Public Const SERVICE_NO_CHANGE = &HFFFF
Public Const SERVICE_BOOT_START = 0
Public Const SERVICE_SYSTEM_START = 1
Public Const SERVICE_AUTO_START = 2
Public Const SERVICE_DEMAND_START = 3
Public Const SERVICE_DISABLED = 4
Public Const stAutomatic = SERVICE_AUTO_START
Public Const stManual = SERVICE_DEMAND_START
Public Const stDisabled = SERVICE_DISABLED
Public Function SetServiceStartupType( _
amachinename As String, _
aservicename As String, _
astartuptype As Integer _
) As Boolean
Dim FuncResult As Boolean
Dim hservicemanager As Long
Dim hService As Long
'set default to successful
FuncResult = True
'open the service control manager
hservicemanager = OpenSCManager( _
amachinename + Chr$(0), _
"ServicesActive" + Chr$(0), _
SC_MANAGER_ALL_ACCESS _
)
If (hservicemanager <> 0) Then
'open the service
hService = OpenService( _
hservicemanager, _
aservicename + Chr$(0), _
SERVICE_ALL_ACCESS _
)
If (hService <> 0) Then
'change the configuration options for the service
Dim rc As Long
rc = ChangeServiceConfig( _
hService, _
SERVICE_NO_CHANGE, _
astartuptype, _
SERVICE_NO_CHANGE, _
ByVal vbNullString, _
ByVal vbNullString, _
ByVal 0&, _
ByVal vbNullString, _
ByVal vbNullString, _
ByVal vbNullString, _
ByVal vbNullString _
)
If (rc = 0) Then FuncResult = False
'close the service
CloseServiceHandle hService
Else
FuncResult = False
End If
'close the service control manager
CloseServiceHandle hservicemanager
Else
FuncResult = False
End If
'return the result
SetServiceStartupType = FuncResult
End Function