>Public Class WindowsService > > Public cDomain As String = "" > Public cIP As String = "" > Public cMessage As String = "" > Public cOutput As String = "" > Public cPassword As String = "" > Public cPath As String = "" > Public cService As String = "" > Public cStatus As String = "" > Public cUsername As String = "" > Private cIPIsMandatory As String = "" > Private cPasswordIsMandatory As String = "" > Private cServiceNameIsMandatory As String = "" > Private cUsernameIsMandatory As String = "" > Private cUnableToCreateService As String = "" > Private cUnableToDeleteService As String = "" > Private cUnableToStartService As String = "" > Private cUnableToStopService As String = "" > Private nLanguage As Integer = 1 > Private oApp As App = Nothing > Private oProcess As LXProcess = Nothing > Private oTaskGroup As Collection = New Collection > > ' This is when we access the data provider in desktop mode > Sub New(ByVal toApplication As App) > oApp = toApplication > nLanguage = oApp.nLanguage > Init() > End Sub > > ' This is when we access the data provider in Web or Web service mode > Sub New(ByVal toProcess As LXProcess) > oProcess = toProcess > oApp = oProcess.oApp > nLanguage = oProcess.nLanguage > Init() > End Sub > > ' Initialization > Private Sub Init() > > ' Based on the language > Select Case nLanguage > > ' English > Case 1 > cIPIsMandatory = "The IP address is mandatory." > cPasswordIsMandatory = "The RunAs password is mandatory." > cServiceNameIsMandatory = "The service name is mandatory." > cUsernameIsMandatory = "The RunAs username is mandatory." > cUnableToCreateService = "Unable to create ##Service## service." > cUnableToDeleteService = "Unable to delete ##Service## service." > cUnableToStartService = "Unable to start ##Service## service." > cUnableToStopService = "Unable to stop ##Service## service." > > ' French > Case 2 > cIPIsMandatory = "L'adresse IP de l'ordinateur est obligatoire." > cPasswordIsMandatory = "Le RunAs mot de passe est obligatoire." > cServiceNameIsMandatory = "Le nom du service est obligatoire." > cUsernameIsMandatory = "Le RunAs code d'usager est obligatoire" > cUnableToCreateService = "Impossible de créer le service ##Service#." > cUnableToDeleteService = "Impossible d'enlever le service ##Service#." > cUnableToStartService = "Impossible de créer le service ##Service##." > cUnableToStopService = "Impossible d'arrêter le service ##Service##." > > ' Spanish > Case 3 > cIPIsMandatory = "The IP address is mandatory." > cPasswordIsMandatory = "The RunAs password is mandatory." > cServiceNameIsMandatory = "The service name is mandatory." > cUsernameIsMandatory = "The RunAs username is mandatory." > cUnableToCreateService = "Unable to create ##Service## service." > cUnableToDeleteService = "Unable to delete ##Service## service." > cUnableToStartService = "Unable to start ##Service## service." > cUnableToStopService = "Unable to stop ##Service## service." > > ' Portuguese > Case 4 > cIPIsMandatory = "The IP address is mandatory." > cPasswordIsMandatory = "The RunAs password is mandatory." > cServiceNameIsMandatory = "The service name is mandatory." > cUsernameIsMandatory = "The RunAs username is mandatory." > cUnableToCreateService = "Unable to create ##Service## service." > cUnableToDeleteService = "Unable to delete ##Service## service." > cUnableToStartService = "Unable to start ##Service## service." > cUnableToStopService = "Unable to stop ##Service## service." > > End Select > > End Sub > > ' Start a service > Public Function StartService() As Boolean > Dim lcIP As String = "" > Dim lcService As String = "" > Dim loLogData As LogData = Nothing > Dim loProcessFile As ProcessFile = Nothing > > ' Get the proper definition as per the current scope > If oProcess Is Nothing Then > loLogData = New LogData(oApp) > loProcessFile = New ProcessFile(oApp) > Else > loLogData = New LogData(oProcess) > loProcessFile = New ProcessFile(oProcess) > End If > > ' Reset the values > cMessage = "" > cOutput = "" > > ' Initialization > lcIP = Trim(cIP) > lcService = Trim(cService) > > ' If we do not have a service > If lcService.Length = 0 Then > cMessage = cServiceNameIsMandatory > Return False > End If > > ' If we do not have an IP > If lcIP.Length = 0 Then > cMessage = cIPIsMandatory > Return False > End If > > ' If we are logging > If oProcess.lLogData Then > > ' Start the log > loLogData.cTitle = "c:\Windows\System32\sc.exe \\" + lcIP + " start """ + lcService + """" > If Not loLogData.StartLog() Then > Return False > End If > > End If > > ' Enable the task > loProcessFile.cWorkingDirectory = "c:\Windows\System32" > loProcessFile.cFileName = "c:\Windows\System32\sc.exe" > loProcessFile.cArguments = "\\" + lcIP + " start """ + lcService + """" > If Not loProcessFile.Process() Then > cMessage = loProcessFile.cMessage > Return False > End If > > ' If we are logging > If oProcess.lLogData Then > > ' Stop the log > loLogData.cExtra = loProcessFile.cLog > If Not loLogData.StopLog() Then > Return False > End If > > End If > > ' If we have an error > If loProcessFile.cError.Length > 0 Then > cMessage = oApp.StrTran(cUnableToStartService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + oApp.StrTran(loProcessFile.cError, "ERROR: ", "") + _ > "sc \\" + lcIP + " start """ + lcService + """" > Return False > End If > > ' Output > cOutput = loProcessFile.cOutput > > ' If we have the word FAILED > If oApp.At("FAILED", cOutput) Then > cMessage = oApp.StrTran(cUnableToStartService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + cOutput + oApp.cCR + oApp.cCR + _ > "sc \\" + lcIP + " start """ + lcService + """" > Return False > End If > > ' Reset the values > cDomain = "" > cIP = "" > cPassword = "" > cPath = "" > cService = "" > cUsername = "" > > Return True > End Function > > ' Stop a service > Public Function StopService() As Boolean > Dim lcIP As String = "" > Dim lcService As String = "" > Dim loLogData As LogData = Nothing > Dim loProcessFile As ProcessFile = Nothing > > ' Get the proper definition as per the current scope > If oProcess Is Nothing Then > loLogData = New LogData(oApp) > loProcessFile = New ProcessFile(oApp) > Else > loLogData = New LogData(oProcess) > loProcessFile = New ProcessFile(oProcess) > End If > > ' Reset the values > cMessage = "" > cOutput = "" > > ' Initialization > lcIP = Trim(cIP) > lcService = Trim(cService) > > ' If we do not have a service > If lcService.Length = 0 Then > cMessage = cServiceNameIsMandatory > Return False > End If > > ' If we do not have an IP > If lcIP.Length = 0 Then > cMessage = cIPIsMandatory > Return False > End If > > ' If we are logging > If oProcess.lLogData Then > > ' Start the log > loLogData.cTitle = "c:\Windows\System32\sc.exe \\" + lcIP + " stop """ + lcService + """" > If Not loLogData.StartLog() Then > Return False > End If > > End If > > ' Stop the task > loProcessFile.cWorkingDirectory = "c:\Windows\System32" > loProcessFile.cFileName = "c:\Windows\System32\sc.exe" > loProcessFile.cArguments = "\\" + lcIP + " stop """ + lcService + """" > If Not loProcessFile.Process() Then > cMessage = loProcessFile.cMessage > Return False > End If > > ' If we are logging > If oProcess.lLogData Then > > ' Stop the log > loLogData.cExtra = loProcessFile.cLog > If Not loLogData.StopLog() Then > Return False > End If > > End If > > ' If we have an error > If loProcessFile.cError.Length > 0 Then > cMessage = oApp.StrTran(cUnableToStopService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + oApp.StrTran(loProcessFile.cError, "ERROR: ", "") + _ > "sc \\" + lcIP + " stop """ + lcService + """" > Return False > End If > > ' Output > cOutput = loProcessFile.cOutput > > ' If we have the word FAILED > If oApp.At("FAILED", cOutput) Then > cMessage = oApp.StrTran(cUnableToStopService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + cOutput + oApp.cCR + oApp.cCR + _ > "sc \\" + lcIP + " stop """ + lcService + """" > Return False > End If > > ' Reset the values > cDomain = "" > cIP = "" > cPassword = "" > cPath = "" > cService = "" > cUsername = "" > > Return True > End Function > > ' Create service > Public Function CreateService() As Boolean > Dim lcAccount As String = "" > Dim lcDomain As String = "" > Dim lcIP As String = "" > Dim lcPassword As String = "" > Dim lcPath As String = "" > Dim lcService As String = "" > Dim lcUsername As String = "" > Dim loLogData As LogData = Nothing > Dim loProcessFile As ProcessFile = Nothing > > ' Get the proper definition as per the current scope > If oProcess Is Nothing Then > loLogData = New LogData(oApp) > loProcessFile = New ProcessFile(oApp) > Else > loLogData = New LogData(oProcess) > loProcessFile = New ProcessFile(oProcess) > End If > > ' Reset the values > cMessage = "" > cOutput = "" > > ' Initialization > lcDomain = Trim(cDomain) > lcIP = Trim(cIP) > lcPassword = Trim(cPassword) > lcPath = Trim(cPath) > lcService = Trim(cService) > lcUsername = Trim(cUsername) > > ' If we have a domain > If lcDomain.Length > 0 Then > lcAccount = lcDomain + "\" + lcUsername > Else > lcAccount = lcUsername > End If > > ' If we do not have a service > If lcService.Length = 0 Then > cMessage = cServiceNameIsMandatory > Return False > End If > > ' If we do not have an IP > If lcIP.Length = 0 Then > cMessage = cIPIsMandatory > Return False > End If > > ' If we do not have a username > If lcUsername.Length = 0 Then > cMessage = cUsernameIsMandatory > Return False > End If > > ' If we do not have a password > If lcPassword.Length = 0 Then > cMessage = cPasswordIsMandatory > Return False > End If > > ' Create the service > loProcessFile.cWorkingDirectory = "c:\Windows\System32" > loProcessFile.cFileName = "c:\Windows\System32\sc.exe" > loProcessFile.cArguments = "\\" + lcIP + " create """ + lcService + """ binPath= """ + lcPath + """ " + _ > "start= demand obj= """ + lcAccount + """ password= " + lcPassword > If Not loProcessFile.Process() Then > cMessage = loProcessFile.cMessage > Return False > End If > > ' If we have an error > If loProcessFile.cError.Length > 0 Then > cMessage = oApp.StrTran(cUnableToCreateService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + oApp.StrTran(loProcessFile.cError, "ERROR: ", "") + _ > "sc \\" + lcIP + " create """ + lcService + """ binPath= """ + lcPath + """ " + "start= demand obj= """ + lcAccount + """" > Return False > End If > > ' Output > cOutput = loProcessFile.cOutput > > ' If we have the word FAILED > If oApp.At("FAILED", cOutput) Then > cMessage = oApp.StrTran(cUnableToCreateService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + cOutput + oApp.cCR + oApp.cCR + _ > "sc \\" + lcIP + " create """ + lcService + """ binPath= """ + lcPath + """ start= demand obj= """ + lcAccount + """" > Return False > End If > > ' Reset the values > cDomain = "" > cIP = "" > cPassword = "" > cPath = "" > cService = "" > cUsername = "" > > Return True > End Function > > ' Delete a service > Public Function DeleteService() As Boolean > Dim lcIP As String = "" > Dim lcService As String = "" > Dim loLogData As LogData = Nothing > Dim loProcessFile As ProcessFile = Nothing > > ' Get the proper definition as per the current scope > If oProcess Is Nothing Then > loLogData = New LogData(oApp) > loProcessFile = New ProcessFile(oApp) > Else > loLogData = New LogData(oProcess) > loProcessFile = New ProcessFile(oProcess) > End If > > ' Reset the values > cMessage = "" > cOutput = "" > > ' Initialization > lcIP = Trim(cIP) > lcService = Trim(cService) > > ' If we do not have a service > If lcService.Length = 0 Then > cMessage = cServiceNameIsMandatory > Return False > End If > > ' If we do not have an IP > If lcIP.Length = 0 Then > cMessage = cIPIsMandatory > Return False > End If > > ' Delete the service > loProcessFile.cWorkingDirectory = "c:\Windows\System32" > loProcessFile.cFileName = "c:\Windows\System32\sc.exe" > loProcessFile.cArguments = "\\" + lcIP + " delete """ + lcService + """" > If Not loProcessFile.Process() Then > cMessage = loProcessFile.cMessage > Return False > End If > > ' If we have an error > If loProcessFile.cError.Length > 0 Then > cMessage = oApp.StrTran(cUnableToDeleteService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + oApp.StrTran(loProcessFile.cError, "ERROR: ", "") + _ > "sc \\" + lcIP + " delete """ + lcService + """" > Return False > End If > > ' Output > cOutput = loProcessFile.cOutput > > ' If we have the word FAILED > If oApp.At("FAILED", cOutput) Then > cMessage = oApp.StrTran(cUnableToDeleteService, "##Service##", lcService) > cMessage = cMessage + oApp.cCR + oApp.cCR + cOutput + oApp.cCR + oApp.cCR + _ > "sc \\" + lcIP + " delete """ + lcService + """" > Return False > End If > > ' Reset the values > cIP = "" > cService = "" > > Return True > End Function > >End Class >