I have a Windows service that with Start Type = Automatic, so that the service starts on boot. If the user stops my service explicitly and restarts it (or some other component of my product stops my service explicitly and restarts it), I need to know that and behave differently in the service.
Is there an API to detect "this service was started automatically by Windows on boot" vs "this service was started manually"? I can't find one on MSDN.
Thanks in advance!
Related
What are the reason when a stopped windows service starts automatically?
I know only few which are
When service start-up mode is automatic and someone re-start the server then service will also get started.
When someone forcefully start the service manually.
Is there any other way when a stopped service can start?
Service triggers. This can be hardware device added, internet connection discovered, group policy change or any ETW event.
Have you checked there is a service Dependence? If another service depends on its function, it will automatically come up even though you stop the service.
Since it keeps restarting, it means you are not suppose to disable or stop the service.
Locate the ASP.NET State Service and check the Startup Type property and click the recovery tab for your service configuration and check if the options there could be restarting it.
You can also run a virus scan on your system to be sure your pc is safe.
The Windows Services UI is able to successfully start a service (Apache) manually.
However, when the service Startup Type is configured as Automatic or "Automatic (Delayed Start)", the service fails to automatically start after restarting Windows (via "shutdown /r").
When automatic start fails, the Event Viewer contains a generic "Incorrect function" message, which we saw previously with a different Services automatic start issue for another service (Wildfly).
For this issue, Apache Loglevel debug does not seem to provide any useful logging.
Since the Windows Services UI is able to successfully start the service manually, are there any logs/tips/tricks/hints for troubleshooting automatic Services start ?
I got a Glassfish 4.1.1 copy with two domains on Win2012R2 (no clusters, no instances). I've set a windows service for each of those.
Both services run regularly up until the moment when I restart either or both of them thru their admin web console (server (Admin Server) -> Restart). The following happens:
The domain-related service stops, but does not start again,
The allegedly stopped domain is perfectly functional (deployed apps and admin console are there) (!!!),
When I try to start the win service manually, I get Error 1067 (GF reports "something" is already listening on required ports and that's the domain itself that is now, somehow, NOT run as a service!),
I can start the service again only after I've stopped the domain thru server (Admin Server) -> Stop.
Why did I mention two domains? Because this does not happen when I have just one domain with its' service.
Domains do not share ports, only things in common are the JDK/JRE and general GF files.
Is this a bug in Glassfish or did I set something wrong?
This is a limitation, rather than a bug. The problem is that GlassFish has no way to tell whether or not it is running as a service (and, if it is, what the name of that service would be).
The restart command means that GlassFish is restarting itself, so Windows detects that the process it started has been terminated and shows the service as stopped, but GlassFish spawns a new JVM itself. It has no capability to tell Windows to start the service again.
Essentially, the behaviour you are seeing is expected.
After some more testing, I realized what was going on:
Glassfish is definitively capable of restarting its' own Windows service,
The thing that was happening is it takes GF a few seconds do this on its' own,
But, before GF domain could restart as a service, I clicked the URL to return to admin console, every time. That forced it to run as an ordinary executable.
It does seem like the restart happens faster with just one win service, but I won't claim that as an absolute truth without more testing, for which I have no time now.
I created a Windows service for my application using a batch file containing the instruction:
sc create <name> binPath= "C:\my\path\" DisplayName= "MyName"
The service is created successfully and the application runs without issues. The Windows Service Manager shows the service in the list, however it does not have the "started" status, even though it is running. Clicking on "start service" fails with "Error 1053: The service did not respond to the start or control request in a timely fashion".
When attempting to control the service using the net command, such as
net stop <name>
or
net start <name>
these commands fail with similar error messages.
This happens consistently on all Windows I tested on (up to Windows 7). Restarting the machine does not change anything.
Any reason why a successfully created and running service cannot be started or stopped (or even have its status recognized)?
(Including information from comments to the question.)
Linux daemon processes are controlled through signals.
Windows Services have a completely model. The process needs to connect to the Service Control Manager (SCM: the services.exe process) on start up to provide a callback. This callback is the main entry to the service, and also how the SCM signals important events (eg. that the service should stop).
This is covered on MSDN, and .NET has specific support (by subclassing ServiceBase.)
It maybe possible to find a helper program that provides the SCM integration and launches you program, but likely it will just terminate your processes (*nix style signals do not exist on Windows) on the SCM sending a stop.
I have created a windows service with Automatic Start Type and install it in my system successfully but it does not start until i restart my system.
Details: yesterday i have create and install my service and then restart my windows so the service started successfully. but the problem occurred today when i boot my windows and opened the services list of windows from Control Panel\Administrative Tools\Services and selected my service i saw that it did not start automatically.
what is my mistake?
Assuming the service is set to 'Automatic' as the startup mode, and that it's state is not 'Started', then there will be at least one message about why the service did not start in the System Event Log.
Typical reasons are that the service didn't start quickly enough (Service Controller imposes a time limit on how quickly services must respond to the 'Start' message) or that the service depended on another service which wasn't yet available (check your service dependencies) or that your service simply failed due to a software error (e.g. some resource it needs could not be found).
Find the error in the event log, and you'll have a much better idea of why your service hasn't started.
As your service was running fine yesterday but not today. Checking all its dependencies would be my first suggestion.
In your Start-> Run, type services.msc . It's a shortcut to open the services console.
Then Right click on your service , if it is listed there, click on Properties on this popup menu.
Open the Dependency tab (4th tab) , check if your service depends on some other service and that dependency is running.
Regards,
bhupendra
Example:
SC.exe config "ServiceName" start= auto