在应用程序启动时禁用Windows服务

时间:2010-06-16 10:58:43

标签: c# .net windows vlc

由于VLC conflict我必须在应用程序启动时关闭Windows高级文本服务。那有什么特殊的API吗?它是否适用于具有默认权限的用户?

5 个答案:

答案 0 :(得分:26)

问题的标题是“禁用Windows服务...”,但答案都说明了如何停止服务。

您在Google上发现的大多数内容都是您可以使用以下内容更新注册表以禁用服务:

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\[YourServiceName]", true);
key.SetValue("Start", 4);

我没有尝试过这种方法,但看起来它似乎有效。我还想出了一个使用sc.exe来禁用该服务的不同方法:

Process sc = Process.Start("sc.exe", "config [YourServiceName] start= disabled");

答案 1 :(得分:2)

ServiceController _ServiceController = new ServiceController([NameService]);
if (!_ServiceController.ServiceHandle.IsInvalid) 
{
     _ServiceController.Stop();
     _ServiceController.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromMilliseconds(uConstante.CtTempoEsperaRespostaServico));
}

答案 2 :(得分:1)

您可以使用ServiceController类。链接文档页面中有代码示例。

答案 3 :(得分:0)

您可以使用WMI。

请看这里,例如:http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=114

答案 4 :(得分:0)

执行“net stop service-name”停止服务或“net start service-name”启动服务。 在控制台中键入“net start”(cmd.exe)以列出所有服务。

您需要管理员权限才能启用/禁用服务。