|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Windows 10. Запрет службы обновления
Windows 10 Home Edition - лицензионная
Asus ROG GL752VW Series Notebook Обновления Windows приводят к тому, что не лицензионные приложения со временем перестают работать. И это факт. И не только это печалит, а и вовсе черт знает что происходит. Запрет службы «Центр обновления Windows» приводит к некоторому успокоению, но только на время. После перезагрузки или выхода из гибернации служба из состояния disabled переходит в ручной режим. Причина в том, что эта служба связана с другими службами, а отключать всю цепочку не хочется, это приведет к непоняткам. Все советы в инете через реестр и прочие решения относятся к версии PRO, поэтому не интересны. Как быть? Вот программа, запускается без формы, висит в списке «Фоновые процессы» под именем «sc_disabled.exe». Что она делает? Через определенное время, которое задается как параметр, по умолчанию 2 секунды, выполняет пакетный файл sc_disabled.bat и все... Служба принудительно раз в 2 секунды становится disabled. Память не жрет 1.5 Мб, ресурсы тоже. Для Win7 тоже подойдет. Выключить программу можно только через Диспетчер задач, так как она циклическая. А запустить ее можно либо вручную, либо через папку «Автозагрузка». Код:
program sc_disabled; uses Windows, SysUtils, ShellApi; var AppPath:string; Handle:THandle; Msg: TMsg; Interval:integer; st:string; code:integer; pri:integer; procedure sysTimerProc(Wnd: HWND; uMsg,idEvent,dwTimer: UINT); pascal; begin ShellExecute(Handle, nil, 'sc_disabled.bat', nil, PChar(AppPath), SW_HIDE); end; begin st:=LowerCase(ParamStr(1)); Val(st,pri,code); if code=0 then Interval:=pri else Interval:=2000; if Interval<1000 then Interval:=1000; AppPath := AnsiUpperCase(ExtractFilePath(ParamStr(0))); SetTimer(0,0,Interval,@sysTimerProc); while (GetMessage(Msg,0,0,0)) do DispatchMessage(Msg); KillTimer(0,0);// до сюда не доходим end. Содержания файла "sc_disabled.bat ": sc config wuauserv start= disabled Программу sc_disabled.exe конечно нужно наделить правами: Свойства+Совместимость+Выполнять эту программу от имени администратора Почему программа запускает bat файл, а не сам bat является конечным звеном? Потому что я не знаю как сделать пакетный файл навсегда от имени администратора и не знаю как сделать в пакетном файле непрерывный таймер. Если кто короче придумает, тот и молодец, а если кто скажет какие службы надо отключить навсегда в цепочке тот вообще гуру. С другой стороны этот код можно вообще и к другим службам прицепить. Я все сказал. Последний раз редактировалось Kek, 04.11.2017 в 01:04. |
#2
|
|||
|
|||
ну, ковыряться со службами, выяснять что от чего зависит, лень.
По поводу этой жуткой смеси. Уж либо общайся с service Manager из своего сервиса, либо посади свой батник на Scheduler. Код:
procedure DisableService(ServiceName: PChar); var SM: TServiceManager; begin SM:=TServiceManager.Create; try SM.Connect; SM.OpenServiceConnection(ServiceName); //not working with TServiceManager as is //but its easy to fix, see below SM.DisableService; finally SM.Free; end; end; |
#3
|
|||
|
|||
Зачем батниками балуешся? Делай так:
Код:
ShellExecute(0, 'open', 'net', 'stop wuauserv', '', SW_HIDE); ShellExecute(0, 'open', 'sc', 'config wuauserv start=disabled', '', SW_HIDE); |
#4
|
|||
|
|||
Цитата:
Все не так просто, я полагаю меня не понимают. Меж тем мой опыт и наблюдения говорят. Единожды отменив службу и забыв про это ничего не выйдет. Служба возобновляется. Как? А черт её знает. Именно поэтому нужен процесс, который постоянно висит и запрещает, запрещает, запрещает... И даже в этом случае, запрещенный процесс иногда запрашивает у меня, что он таки готов обновиться... Смотрю в службу, а она отключена... Вот так. |