dotnet-win32-service icon indicating copy to clipboard operation
dotnet-win32-service copied to clipboard

Stop service before deleting it to avoid "disabled" state and being able to recreate it without having to manually stop it.

Open GuyBrousseau opened this issue 6 years ago • 2 comments

Call the StopService() method prior to unistalling the service in Win32ServiceManager to prevent it staying in "disabled" state until someone stops the service (which might never happen). If not doing that, we cannot then install the service. Add a Stop() method to ServiceHandle class. Add a StopService() method to INativeInterop (implemented in Win32Interop). Add ControlService() function to Win32Interop file.

GuyBrousseau avatar Jun 13 '18 18:06 GuyBrousseau

Thanks for looking into this.

Do you think this warrants a breaking change in behavior? I'm not against it but trying to decide if an additional StopAndDelete() method makes sense.

ServiceController makes a more sophisticated dance of stopping all dependent services recursively - https://github.com/dotnet/corefx/blob/63cfd9ebb28533078b69daf16287dee1e1daef22/src/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs#L870-L901, so I'm wondering if we should do that as well or just use ServiceController to do that.

dasMulli avatar Jun 13 '18 19:06 dasMulli

Hi Martin!

I don’t mind having a separate call. I simply thought that there was no point to delete the service without first stopping it. You could just add a default parameter to DeleteService(strtring serviceName, bool stopImmediately = false) similar to the CreateService. As for how to implement it, I don’t mind. My specific needs are only with a small service and no dependencies. If you think a more complete solution can be implemented, go for it ! 😊

-Guy

De : Martin Andreas Ullrich [email protected] Envoyé : 13 juin 2018 15:21 À : dasMulli/dotnet-win32-service [email protected] Cc : Guy Brousseau [email protected]; Author [email protected] Objet : Re: [dasMulli/dotnet-win32-service] Stop service before deleting it to avoid "disabled" state and being able to recreate it without having to manually stop it. (#75)

Thanks for looking into this.

Do you think this warrants a breaking change in behavior? I'm not against it but trying to decide if an additional StopAndDelete() method makes sense.

ServiceController makes a more sophisticated dance of stopping all dependent services recursively - https://github.com/dotnet/corefx/blob/63cfd9ebb28533078b69daf16287dee1e1daef22/src/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs#L870-L901https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdotnet%2Fcorefx%2Fblob%2F63cfd9ebb28533078b69daf16287dee1e1daef22%2Fsrc%2FSystem.ServiceProcess.ServiceController%2Fsrc%2FSystem%2FServiceProcess%2FServiceController.cs%23L870-L901&data=02%7C01%7Cgbrousseau%40genetec.com%7C122d3c88bb4643bf2dfc08d5d162bc9c%7C7ba8d2fb46604a19802e4d015a17e167%7C0%7C0%7C636645144364043944&sdata=RpyoNFLIxm3%2FQgaWLFPRLhHv6RYOI5pqbViB%2FiRRMuw%3D&reserved=0, so I'm wondering if we should do that as well or just use ServiceController to do that.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FdasMulli%2Fdotnet-win32-service%2Fpull%2F75%23issuecomment-397054885&data=02%7C01%7Cgbrousseau%40genetec.com%7C122d3c88bb4643bf2dfc08d5d162bc9c%7C7ba8d2fb46604a19802e4d015a17e167%7C0%7C0%7C636645144364043944&sdata=PSRC3N2wKB9ORWwSVhsU2NjcvnwXuSTC7LaQtvhojRA%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAmNs0hANMh9LPSf38VoaU0KpeegCdalSks5t8WYBgaJpZM4UmrKl&data=02%7C01%7Cgbrousseau%40genetec.com%7C122d3c88bb4643bf2dfc08d5d162bc9c%7C7ba8d2fb46604a19802e4d015a17e167%7C0%7C0%7C636645144364053952&sdata=PB2ZHr7XdVfXNGUaxzl30QR005oLLH61Dz02AHKeWwg%3D&reserved=0.

GuyBrousseau avatar Jun 13 '18 19:06 GuyBrousseau