如何在 C# 中以编程方式将 Windows 服务的启动类型更改为禁用
How to change the startup type of Windows service to Disabled programmatically in C#
您好,我正在尝试更改现有 Windows 服务的启动类型。说 "Spooler"(后台打印程序)。我正在使用 ServiceController
var service = new ServiceController("Spooler");
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, 600);
虽然我可以 start/stop 服务,但我不知道如何更改启动类型本身? (例如:Disabled/Automatic/Manual)
当我查看 ServiceController
的定义时,我可以看到正在定义 ServiceStartMode
。有人可以帮助我如何设置此选项吗?我的需要是使用 ServiceControl class 或任何其他可行的方式以编程方式禁用 Windows 服务..
最简单的方法是使用 sc command tool:
将启动类型更改为禁用的示例:
sc config "MySql" start=disabled
请注意,您需要具有管理员权限才能成功运行此命令。
用 C# 代码包装:
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}");
}
更新:
使用 process.Exit
代码检查处理操作是否成功。
0 ExitCode
成功。
注意:如果您 运行 在没有管理员权限的情况下使用 process/Visual Studio,则 ExitCode
将为 5(定义的访问权限)。
您好,我正在尝试更改现有 Windows 服务的启动类型。说 "Spooler"(后台打印程序)。我正在使用 ServiceController
var service = new ServiceController("Spooler");
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, 600);
虽然我可以 start/stop 服务,但我不知道如何更改启动类型本身? (例如:Disabled/Automatic/Manual)
当我查看 ServiceController
的定义时,我可以看到正在定义 ServiceStartMode
。有人可以帮助我如何设置此选项吗?我的需要是使用 ServiceControl class 或任何其他可行的方式以编程方式禁用 Windows 服务..
最简单的方法是使用 sc command tool:
将启动类型更改为禁用的示例:
sc config "MySql" start=disabled
请注意,您需要具有管理员权限才能成功运行此命令。
用 C# 代码包装:
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}");
}
更新:
使用 process.Exit
代码检查处理操作是否成功。
0 ExitCode
成功。
注意:如果您 运行 在没有管理员权限的情况下使用 process/Visual Studio,则 ExitCode
将为 5(定义的访问权限)。