windows service
-
i have 2 applications , 1º is in windows service and the other is windows application. i need to start, stop and pause service from windows application. i have done that,but the problem is when i start the service, it works, when i stop the service, it wors. but when i try to start again the service, it does not work, i need to close the project and reopen and then it works again. Please Help
-
i have 2 applications , 1º is in windows service and the other is windows application. i need to start, stop and pause service from windows application. i have done that,but the problem is when i start the service, it works, when i stop the service, it wors. but when i try to start again the service, it does not work, i need to close the project and reopen and then it works again. Please Help
Use this code... System.ServiceProcess.ServiceController scm = new System.ServiceProcess.ServiceController ("MyService","MyServer"); //then to start it... scm.Start(); //or to stop it... scm.Stop(); You might have to create a new instance of the service control manager object each time you want to start or stop the service. I use this same code in a number of applications and have never had a problem with it. Darryl Borden Principal IT Analyst dborden@eprod.com
-
Use this code... System.ServiceProcess.ServiceController scm = new System.ServiceProcess.ServiceController ("MyService","MyServer"); //then to start it... scm.Start(); //or to stop it... scm.Stop(); You might have to create a new instance of the service control manager object each time you want to start or stop the service. I use this same code in a number of applications and have never had a problem with it. Darryl Borden Principal IT Analyst dborden@eprod.com
this is my code in windows application, that calls the other project the windows application class ServiceInstaller { #region Private Variables private string _servicePath; private string _serviceName; private string _serviceDisplayName; #endregion Private Variables #region DLLImport [DllImport("advapi32.dll")] public static extern IntPtr OpenSCManager(string lpMachineName,string lpSCDB, int scParameter); [DllImport("Advapi32.dll")] public static extern IntPtr CreateService(IntPtr SC_HANDLE,string lpSvcName,string lpDisplayName, int dwDesiredAccess,int dwServiceType,int dwStartType,int dwErrorControl,string lpPathName, string lpLoadOrderGroup,int lpdwTagId,string lpDependencies,string lpServiceStartName,string lpPassword); [DllImport("advapi32.dll")] public static extern void CloseServiceHandle(IntPtr SCHANDLE); [DllImport("advapi32.dll")] public static extern int StartService(IntPtr SVHANDLE,int dwNumServiceArgs,string lpServiceArgVectors); [DllImport("advapi32.dll",SetLastError=true)] public static extern IntPtr OpenService(IntPtr SCHANDLE,string lpSvcName,int dwNumServiceArgs); [DllImport("advapi32.dll")] public static extern int DeleteService(IntPtr SVHANDLE); [DllImport("kernel32.dll")] public static extern int GetLastError(); #endregion DLLImport public bool InstallService(string svcPath, string svcName, string svcDispName) { #region Constants declaration. int SC_MANAGER_CREATE_SERVICE = 0x0002; int SERVICE_WIN32_OWN_PROCESS = 0x00000010; //int SERVICE_DEMAND_START = 0x00000003; int SERVICE_ERROR_NORMAL = 0x00000001; int STANDARD_RIGHTS_REQUIRED = 0xF0000; int SERVICE_QUERY_CONFIG = 0x0001; int SERVICE_CHANGE_CONFIG = 0x0002; int SERVICE_QUERY_STATUS = 0x0004; int SERVICE_ENUMERATE_DEPENDENTS = 0x0008; int SERVICE_START =0x0010; int SERVICE_STOP =0x0020; int SERVICE_PAUSE_CONTINUE =0x0040; int SERVICE_INTERROGATE =0x0080; int SERVICE_USER_DEFINED_CONTROL =0x0100; int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CO
-
this is my code in windows application, that calls the other project the windows application class ServiceInstaller { #region Private Variables private string _servicePath; private string _serviceName; private string _serviceDisplayName; #endregion Private Variables #region DLLImport [DllImport("advapi32.dll")] public static extern IntPtr OpenSCManager(string lpMachineName,string lpSCDB, int scParameter); [DllImport("Advapi32.dll")] public static extern IntPtr CreateService(IntPtr SC_HANDLE,string lpSvcName,string lpDisplayName, int dwDesiredAccess,int dwServiceType,int dwStartType,int dwErrorControl,string lpPathName, string lpLoadOrderGroup,int lpdwTagId,string lpDependencies,string lpServiceStartName,string lpPassword); [DllImport("advapi32.dll")] public static extern void CloseServiceHandle(IntPtr SCHANDLE); [DllImport("advapi32.dll")] public static extern int StartService(IntPtr SVHANDLE,int dwNumServiceArgs,string lpServiceArgVectors); [DllImport("advapi32.dll",SetLastError=true)] public static extern IntPtr OpenService(IntPtr SCHANDLE,string lpSvcName,int dwNumServiceArgs); [DllImport("advapi32.dll")] public static extern int DeleteService(IntPtr SVHANDLE); [DllImport("kernel32.dll")] public static extern int GetLastError(); #endregion DLLImport public bool InstallService(string svcPath, string svcName, string svcDispName) { #region Constants declaration. int SC_MANAGER_CREATE_SERVICE = 0x0002; int SERVICE_WIN32_OWN_PROCESS = 0x00000010; //int SERVICE_DEMAND_START = 0x00000003; int SERVICE_ERROR_NORMAL = 0x00000001; int STANDARD_RIGHTS_REQUIRED = 0xF0000; int SERVICE_QUERY_CONFIG = 0x0001; int SERVICE_CHANGE_CONFIG = 0x0002; int SERVICE_QUERY_STATUS = 0x0004; int SERVICE_ENUMERATE_DEPENDENTS = 0x0008; int SERVICE_START =0x0010; int SERVICE_STOP =0x0020; int SERVICE_PAUSE_CONTINUE =0x0040; int SERVICE_INTERROGATE =0x0080; int SERVICE_USER_DEFINED_CONTROL =0x0100; int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CO
Why not just use the ServiceController class and save yourself most of the work? You can make half of this code disappear, making it much easier to support. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome