Windows 2000 Service
Jeg har lavet en SMTP server i VB6.0 som jeg gerne ville have til at kører som en service på min Windows 2000.Jeg har prøvet med følgende, men i stedet for at returnerer et handle til min nye serrvice eller i det mindste en fejl, får jeg bare et 0 som svar.
API kaldet GetLastError returnerer ligeledes et 0, men min service er altså ikke blevet registrert, hvad går der galt?
Her er koden:
\' Parametres to OpenSCManager()
Private Const SERVICES_ACTIVE_DATABASE = \"ServicesActive\"
Private Const SC_MANAGER_CREATE_SERVICE = &H2
\' Return values from OpenSCManager()
\'Private Const ERROR_ACCESS_DENIED = 5&
Private Const ERROR_DATABASE_DOES_NOT_EXIST = 1065&
\'Private Const ERROR_INVALID_PARAMETER = 87
\' Parametres to CreateService()
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const SERVICE_WIN32_OWN_PROCESS = &H0
Private Const SERVICE_INACTIVE = &H2
Private Const SERVICE_ERROR_IGNORE = &H0
Private Const SERVICE_PATH = \"\"\"C:\\Documents and Settings\\Administrator\\Skrivebord\\VBStorage\\Lab\\NT Service\\inerd_service.exe\"\"\"
\' CreateService() return values.
Private Const ERROR_ACCESS_DENIED = 5&
Private Const ERROR_CIRCULAR_DEPENDENCY = 1059&
Private Const ERROR_DUP_NAME = 52&
Private Const ERROR_INVALID_HANDLE = 6&
Private Const ERROR_INVALID_NAME = 123&
Private Const ERROR_INVALID_PARAMETER = 87
Private Const ERROR_INVALID_SERVICE_ACCOUNT = 1057&
Private Const ERROR_SERVICE_EXISTS = 1073&
Private Declare Function CreateService Lib \"advapi32.dll\" Alias \"CreateServiceA\" ( _
ByVal hSCManager As Long, _
ByVal lpServiceName As String, _
ByVal lpDisplayName As String, _
ByVal dwDesiredAccess 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) As Long
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 GetLastError Lib \"kernel32\" () As Long
Public Function RegisterService()
Dim hSCM As Long
Dim ret As Long
hSCM = OpenSCManager(vbNull, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CREATE_SERVICE)
ret = CreateService(hSCM, App.Title, \"h\" & App.Title, STANDARD_RIGHTS_REQUIRED, SERVICE_WIN32_OWN_PROCESS, SERVICE_INACTIVE, SERVICE_ERROR_IGNORE, SERVICE_PATH, vbNull, vbNull, vbNull, vbNull, vbNull)
End Function
