Reputation: 538
Hi I'm trying to change the startup type of a existing Windows service. Say "Spooler" ( Print Spooler). I'm using ServiceController
var service = new ServiceController("Spooler");
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, 600);
Though I'm able to start/stop services I'm not able to figure out how can I change the startup type itself? ( eg: Disabled/Automatic/Manual )
When I peek definition of ServiceController
I can see ServiceStartMode
being defined. Could someone help me how can I set this option?. My need is to disable a Windows service programmatically using ServiceControl class or any other feasible way..
Upvotes: 0
Views: 2880
Reputation: 6103
The simplest way is to use a sc command tool:
Example for changing the startup type to disabled:
sc config "MySql" start=disabled
Note you need to have the administrator privileges to run this command successfully.
Wrapping with C# code:
var startInfo = new ProcessStartInfo
{
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "CMD.EXE",
Arguments = string.Format("/C sc {0} {1} {2}", "config", "MySql", "start=disabled"),
};
using (var process = new Process { StartInfo = startInfo})
{
if (!process.Start())
{
return;
}
process.WaitForExit();
Console.WriteLine($"Exit code is {process.ExitCode}");
}
Update:
Use process.Exit
code to check if process the operation succeeded or not.
0 ExitCode
is success.
Note: In case you are running the process/Visual Studio without the Admin privileges, the ExitCode
will be 5 (access deined).
Upvotes: 1