2010-06-16 5 views
6

Из-за VLC conflict Мне нужно отключить Windows Advanced Text Services при запуске приложения. Есть ли какой-нибудь специальный API для этого? Будет ли он работать для пользователей с правами по умолчанию?Отключить службу Windows при запуске приложения

+3

На самом деле не очень вежливо отключать службы, которые не являются вашими; возможно, пользователю нужна эта служба. Вы должны хотя бы уведомить пользователя где-нибудь (экран справки, readme и т. Д.). – Luke

ответ

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' –

1

Вы можете использовать ServiceController класс для этого. На странице связанной документации есть примеры кода.

0

просто выполните «net stop service-name», чтобы остановить службу или «net start service-name», чтобы запустить службу. введите «net start» в консоли (cmd.exe), чтобы перечислить все службы.

Для включения/выключения служб вам необходимы права администратора.

21

Вопрос под названием «Отключить службу 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"); 
+2

+1 Это единственный ответ, который фактически отвечает на вопрос – BradleyDotNET

Смежные вопросы