2015-08-10 4 views
-1

Мне нужно остановить перезапуск службы Windows Update, но я хочу, чтобы консоль закрылась после или не отображалась вообще. Я попробовал все, что здесь говорится, но консольное окно все равно не исчезнет.Окно консоли не скроет

Process process = new Process(); 
     process.StartInfo.FileName = "cmd"; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.Arguments = "/C start \"wuauserv\""; 
     process.StartInfo.CreateNoWindow = true; 
     process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     process.Start(); 
     process.WaitForExit(); 
+0

Вы не просто пытаетесь запустить/остановить службу, а сами запустить сервис? – BugFinder

+2

Использование оболочки cmd для этого глупо. Google о том, как остановить и запустить службы Windows непосредственно с C#. –

ответ

3

Id предложить вместо вашего How to stop/Start windows services

Начало службы

Следующий метод пытается запустить службу, указанную именем сервиса. Затем он ждет, пока служба не будет запущена, или произойдет тайм-аут .

public static void StartService(string serviceName, int timeoutMilliseconds) 
{ 
    ServiceController service = new ServiceController(serviceName); 
    try 
    { 
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

    service.Start(); 
    service.WaitForStatus(ServiceControllerStatus.Running, timeout); 
    } 
    catch 
    { 
    // ... 
    } 
} 

Остановка службы

Следующий метод пытается остановить указанную службу, и он ждет, пока служба не будет остановлена ​​или тайм-аута.

public static void StopService(string serviceName, int timeoutMilliseconds) 
{ 
    ServiceController service = new ServiceController(serviceName); 
    try 
    { 
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); 

    service.Stop(); 
    service.WaitForStatus(ServiceControllerStatus.Stopped, timeout); 
    } 
    catch 
    { 
    // ... 
    } 
} 

Вы можете управлять услугой без консольного окна появляющегося

+0

получил пониженное голосование? приятно .. люблю тебя тоже: P – BugFinder

+0

Я не вижу ни одного нисходящего потока? и не вижу причин для этого. – Rahul

+0

Хмм, я получил уведомление о нисходящем потоке – BugFinder

0

Наряду с RedirectStandardOutput набор RedirectStandardError к true а

process.startInfo.RedirectStandardOutput = true; 
process.startInfo.RedirectStandardError = true; 

Также убедитесь, что UseShellExecute должен быть установлен в false иначе нет смысла устанавливать CreateNoWindow = true.

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