Здравствуйте, Pavel Dvorkin, Вы писали:
PD>ОС не может решать, какие сервисы полезные, а какие нет.
Не может или не хочет? Вполне можно заложить в логику извлечения устройства приостановку работы служб, которые мешают. Почему нет? Сделать список служб, которые ни в каком случае нельзя приостанавливать, а остальным отсылать соответствующее сообщение.
>>Или должна сама предлагать их отключить в случае проблем.
PD>Хм. Ты предлагаешь, чтобы обычному пользователю ОС предлагала — а не отключить ли Вам "Брокер системных событий" ? Или "Клиент групповой политики" ?
Нет, я предлагаю сделать механизм прерывания работы этих служб. Даже интерфейс, а не механизм — он есть готовый, вплоть до того, перезапускать ли службу после сбоев, сколько раз пробовать это делать и с какими таймаутами. Тут нет никакого риска.
PD>Нет уж. Нужно ему — пусть идет в "Сервисы" и там отключает, беря тем самым ответственность на себя.
PD>А то как бы после отключения пары-тройки сервисов не пришлось бы Windows переустанавливать...
Так пользователю же не сообщается какая служба мешает. В том-то и проблема. Так-то службу можно и через диспетчер задач приостановить, интерфейс есть.
PD>Прерваться совсем — это есть, net stop, но при этом он не прервется, а закончит работу, и можно его будет разве что заново запустить net start.
PD>Вот только это лишь просьба — SERVICE_CONTROL_STOP. Он может не прерваться. Аналогично тому, как нажатие на крестик в верхнем правом углу окна означает лишь посылку WM_CLOSE, а закроется ли окно — зависит от того, что сделает обработчик.
А как же SERVICE_CONTROL_PAUSE?
https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-controlserviceexa