Показать сообщение отдельно
  #1  
Старый 04.11.2017, 01:00
Kek Kek вне форума
Прохожий
 
Регистрация: 21.11.2010
Адрес: Москва
Сообщения: 17
Репутация: 10
По умолчанию 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 является конечным звеном? Потому что я не знаю как сделать пакетный файл навсегда от имени администратора и не знаю как сделать в пакетном файле непрерывный таймер.
Если кто короче придумает, тот и молодец, а если кто скажет какие службы надо отключить навсегда в цепочке тот вообще гуру.
С другой стороны этот код можно вообще и к другим службам прицепить.
Я все сказал.
Ответить с цитированием