2010-06-16 101 views
6

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

+3

禁用不属于您自己的服务并不真正礼貌;也许用户需要运行这个服务。您至少应该在某处通知用户(帮助屏幕,自述文件等)。 – Luke 2010-06-16 14:25:12

回答

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

对于正确的代码:'_ServiceController.ServiceHandle!= null'被替换为'!_ServiceController.ServiceHandle.IsInvalid && _ServiceController.Status!= ServiceControllerStatus.Stopped' – 2017-01-18 16:37:17

0

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

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

21

问题标题为“禁用Windows服务...”,但答案都告诉如何停止服务。

大多数的你会发现在谷歌是你可以更新注册表,使用这样的事情禁用服务:

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"); 
+2

+1这是实际回答问题的唯一答案 – BradleyDotNET 2014-02-26 20:25:33

相关问题