2013-08-23 11 views
3

Я следую вместе с http://msdn.microsoft.com/en-us/library/bb332338.aspx, чтобы разместить мою службу в качестве службы Windows. Он устанавливается просто отлично, но я бы хотел установить параметры восстановления «Перезапустить службу» на «Первый сбой», «Второй сбой» или «Последующий сбой». Как это можно достичь?Наряду с моим установщиком службы Windows, можно ли установить параметры восстановления при возникновении ошибок?

ответ

4

Варианты для этого не являются простыми, они требуют вызова некоторых методов, чтобы вытащить его. Вы можете использовать что-то вроде следующего расширения: http://www.codeproject.com/Articles/6164/A-ServiceInstaller-Extension-That-Enables-Recovery или сворачивать самостоятельно, используя команды.

[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")] 
public static extern bool 
ChangeServiceFailureActions(IntPtr hService, int dwInfoLevel, 
[ MarshalAs(UnmanagedType.Struct) ] ref SERVICE_FAILURE_ACTIONS lpInfo); 


[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")] 
public static extern bool 
ChangeServiceDescription(IntPtr hService, int dwInfoLevel, 
[ MarshalAs(UnmanagedType.Struct) ] ref SERVICE_DESCRIPTION lpInfo); 

Смотреть http://netcode.ru/dotnet/?lang=&katID=30&skatID=277&artID=7660 для получения дополнительной информации

+0

А это похоже на более правильный способ сделать это. – Alexandru

2

Вы можете установить параметры восстановления с помощью sc.exe из командной строки. Этот ответ имеет хороший пример того, как сделать это с помощью C#:

Install Windows Service with Recovery action to Restart

+0

Есть не лучше, встроенный в пути? – Alexandru

+0

Не то, чтобы я знал. –

+0

Для записи я пошел с этим так. Вышеупомянутый метод - лучший способ вызвать его, но намерение не так ясно читает ваш код. Я думаю, что это самый ясный способ добиться этого. – Alexandru

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

  • Нет связанных вопросов^_^