службы окон

Можно ли создать службу Windows, которую нельзя будет остановить, пока машина не выключится. Поскольку я хочу запустить одно из своих приложений вместе со службой, возможно ли это сделать?

Спасибо, просто подскажите как запустить мое приложение вместе с сервисом.


person RV.    schedule 03.04.2009    source источник
comment
Без обид, но я уверен, что вы получили бы гораздо больше ответов, если бы приложили усилия и использовали правильный английский.   -  person Tamas Czinege    schedule 03.04.2009
comment
Я не знаю, потому что это означает поиск в Google. 2 жесткий.   -  person Learning    schedule 03.04.2009
comment
Пробовал переводить на английский.   -  person Richard    schedule 03.04.2009


Ответы (5)


Вы не можете создать процесс, который невозможно убить в Windows. В противном случае Windows сделает это с критическими процессами (убьет csrss.exe для быстрого BSOD). Тщательно настроив ACL для служб и процессов, вы можете усложнить задачу, но это всегда можно решить с помощью привилегий Take Ownership и Debug.

person Richard    schedule 03.04.2009
comment
Одним из предостережений являются определенные типы драйверов, которые требуют перезагрузки для загрузки/выгрузки. Если ваша цель состоит в том, чтобы иметь «всегда работающее» приложение, вы можете подумать о реализации драйвера режима ядра. - person Shaun Wilson; 18.03.2011

Итак, что вы просите, это служба Windows, которая не может быть прекращена до тех пор, пока Windows не будет закрыта, тогда вы хотите знать, есть ли способ прикрепить программу к этой службе, чтобы ее также нельзя было завершить?

Я могу ошибаться, но я сомневаюсь, что Windows даст вам возможность создать и прикрепить программу к службе, которую невозможно будет убить, если вы не отключите ее. я предполагаю, что вам придется написать какую-то дополнительную программу для мониторинга текущей, чтобы она могла перезапустить ее, если она была закрыта.

person kevchadders    schedule 03.04.2009
comment
Вы не можете создать процесс, который невозможно убить в Windows. В противном случае Windows сделает это с критическими процессами (убьет csrss.exe для быстрого BSOD). Тщательно настроив ACL для служб и процессов, вы можете усложнить задачу, но это всегда можно решить с помощью привилегий Take Ownership и Debug. - person Richard; 03.04.2009
comment
@Richard: Вы должны опубликовать это как ответ. Это правильный ответ, но я не могу проголосовать за него. - person Stephen Martin; 03.04.2009

Службу Windows можно сделать неостановимой, указав в структуре dwControlsAccepted структуры SERVICE_STATUS только выключение. Затем используйте setservicestatus, чтобы применить статус. Но процесс можно убить. Просто остановить службу через scm не получится

person dodo    schedule 02.12.2014

Один из способов — настроить другую службу или запланированное задание, которое отслеживает службы и перезапускает их.

Ценность этого подхода действительно будет зависеть от характера ваших задач. Я видел, как этот подход использовался для поддержания слегка нестабильной службы в рабочем состоянии (это была устаревшая система, и у команды не было времени, чтобы переписать ее немедленно, поэтому они использовали это в качестве пластыря).

person dommer    schedule 03.04.2009

Как указывали другие (особенно Ричард), практически невозможно сделать процесс Windows «неубиваемым».

Если вы хотите, чтобы ваше приложение работало круглосуточно и без выходных, я предлагаю использовать такой продукт, как AlwaysUp, который запустит ваше приложение как службу, внимательно следит за ним и быстро снова запускает его, если оно по какой-либо причине не работает.

Удачи!

person CoreTech    schedule 24.07.2010