Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Windows

Как изменить параметры сервиса Windows, если это запрещено в оснастке? : Windows

22.11.2024 21:26


27.03.2017 10:05
Итак, иногда попадаются сервисы, для которых Администратор Windows вообще не Администратор. Например:




Цитата:
C:\>sc queryex PlugPlay

Имя_службы: PlugPlay
Тип : 20 WIN32_SHARE_PROCESS
Состояние : 4 RUNNING
(NOT_STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
Код_выхода_Win32 : 0 (0x0)
Код_выхода_службы : 0 (0x0)
Контрольная_точка : 0x0
Ожидание : 0x0
ID_процесса : 652
Флаги :
Можно прибить 652 процесс через taskkill, но не факт, что при этом винда не решит, что она при смерти и не уйдет в ребут или синьку (несмотря на то, что у вас там на закладке "Восстановление"). Интересует, где прописано, что сервис NOT_STOPPABLE (подозреваю что в ветке реестра Security сервиса) и как это менять? Пойду политику шерстить, но если кто-то знает, напишите, пожалуйста.

В качестве небольшого бонуса есть возможность менять тип загрузки через SC.
Код:
C:\>sc config PlugPlay start= demand
[SC] ChangeServiceConfig: успех
не забываем, что после = должен быть пробел (программисты мелкомягких очень странные, да).
27.03.2017 10:15
Самое главное в процессе экспериментов не убить винду, если конечно это не является целью экспериментов ))


ЗЫ. параметры запуска служб хранятся в реестре
27.03.2017 10:28
Нене, винда мне эта нужна и она не на виртуалке даже :)
Понятно, что в реестре, как бы больше и негде. Вопрос в том, где именно... Потыркал права, не похоже...

Кстати, тип запуска можно еще и тут поменять
Код:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PlugPlay
Параметр Start. 2 = Вручную
Если не дает поменять, проверьте владельца ветки и права на нее.
27.03.2017 10:38
Цитата:
OlegON Интересует, где прописано, что сервис NOT_STOPPABLE
Если это разыскиваешь, то вот... в коде сервиса это прописано.

Цитата:
Services can be marked as "not stoppable":
In C/C++ by specifying SERVICE_ACCEPT_STOP flag when calling SetServiceStatus (see SERVICE_STATUS for details).
If .NET, by set ServiceBase.CanStop to false.
27.03.2017 10:58
Елки-палки... Т.е. при старте оно само себя взводит... Т.е. один вариант - сбивать PID и в этой же строке переименовывать exe, если на ручной запуск поменять не дает...
27.03.2017 11:13
нет. это рантайм...



Цитата:
ServiceBase::CanStop Property
.NET Framework (current version)

Gets or sets a value indicating whether the service can be stopped once it has started.
Namespace: System.ServiceProcess
Assembly: System.ServiceProcess (in System.ServiceProcess.dll)

Remarks

When Stop is called on a service, the Service Control Manager (SCM) verifies whether the service accepts Stop commands using the value of CanStop. For most services, the value of CanStop is true, but some operating system services, for example, do not allow the user to stop them.

If CanStop is true, the Stop command is passed to the service and the OnStop method is called if it is defined. If OnStop is not implemented in the derived class, the SCM handles the Stop command through the empty base class ServiceBase::OnStop method.
Устанавливать можно где угодно. Обычно в конструкторе... Но и на лету ничто не мешает менять туда-сюда.
27.03.2017 11:20
Еще один дебилизм. Админ должен иметь возможность останавливать все что угодно, независимо от того, что там программер думал...
Часовой пояс GMT +3, время: 21:26.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.