Warning: Invalid argument supplied for foreach() in [path]/includes/class_postbit_alt.php(474) : eval()'d code on line 131

Warning: Cannot modify header information - headers already sent by (output started at [path]/includes/class_core.php:3283) in [path]/external.php on line 865

Warning: Cannot modify header information - headers already sent by (output started at [path]/includes/class_core.php:3283) in [path]/external.php on line 865

Warning: Cannot modify header information - headers already sent by (output started at [path]/includes/class_core.php:3283) in [path]/external.php on line 865

Warning: Cannot modify header information - headers already sent by (output started at [path]/includes/class_core.php:3283) in [path]/external.php on line 865

Warning: Cannot modify header information - headers already sent by (output started at [path]/includes/class_core.php:3283) in [path]/external.php on line 865
VirusNet - FAQ http://virusnet.info/forum/ ru Tue, 07 Sep 2010 03:52:41 GMT vBulletin 60 http://virusnet.info/forum/images/misc/rss.jpg VirusNet - FAQ http://virusnet.info/forum/ Как полностью устранить проблему, связанную с настройками автоматического обновления http://virusnet.info/forum/showthread.php?t=9188&goto=newpost Sun, 15 Aug 2010 08:36:17 GMT Данный скрипт распространяется свободно и может быть модицифирован по согласованию с авторами - представителями VirusNet.Info При публикации скрипта...
Лицензионное соглашение и описание. Прочесть обязательно
Данный скрипт распространяется свободно и может быть модицифирован по согласованию с авторами - представителями VirusNet.Info
При публикации скрипта данный комментарий обязателен.

Описание:

Из-за своей универсальности скрипт применяется целиком, как есть, для русской и английской локализации Windows. Определение локализации автоматическое.

Скриптом устраняется проблемы вида %fystemroot% как для обеих служб, так и для одной из них: BITS или wuauserv

Скрипт автоматически определит службу с повреждённым параметром и исправит неправильное значение параметра(ов) ImagePath
Код:

%fystemRoot%\system32\svchost.exe -k netsvcs
на правильное
Код:

%SystemRoot%\system32\svchost.exe -k netsvcs
Также скрипт применяется для случаев вида
Цитата:

Нестандартный ключ реестра для системной службы: BITS ImagePath=""
Нестандартный ключ реестра для системной службы: wuauserv ImagePath=""
Кратко: некоторые вредоносы удаляют часть параметров из веток и\или параметров в службах BITS и\или wuauserv. И в результате мы можем наблюдать, что в этих ветках обычно присутствует всего две ветки и два параметра: ImagePath и ServiceDll.

Скрипт автоматически производит проверку на наличие необходимых параметров и добавляет, а также исправляет, если это необходимо, на нужные\недостающие.

При выполнении скрипта перед перезаписью для страховки делается бекап двух веток
Код:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv

Файлы бекапа BITS.reg и wuauserv.reg



AVZ, меню "Файл - Выполнить скрипт" -- Скопировать ниже написанный скрипт-- Нажать кнопку "Запустить".
Код:

var
 DescriptionTextWuauServ, DispayNameTextWuauServ, DescriptionTextBITS: String;
 DispayNameTextBITS, FullPathSystem32, NameFolderSystem32, FileServiceDll: String;
 ImagePathStr, RootStr, SubRootStr, LangID: string;
 AllRoots, AllKeys, RootsRestored, KeysRestored, KeysFixed: integer;
 FinishMsg, RestoreMsg, FixMsg, CheckMsg: String;
 RegSectMsg, ParamMsg, ParamValueMsg, InRegSectMsg, CorrectMsg, RestMsg: String;

procedure CheckAndRestoreSection(Root: String);
begin
 Inc(AllRoots);
 if RegKeyExistsEx('HKLM', Root)
  then RegKeyResetSecurity('HKLM', Root)
  else
  begin
    Inc(RootsRestored);
    RegKeyCreate('HKLM', Root);
    AddToLog(RegSectMsg + Root + RestMsg);
  end;
end;

procedure CheckAndRestoreSubSection;
begin
 CheckAndRestoreSection(SubRootStr);
end;

procedure RestoredMsg(Root, Param: String);
begin
 AddToLog(ParamMsg + Param + InRegSectMsg + Root + RestMsg);
 Inc(KeysRestored);
end;

procedure FixedMsg(Root, Param: String);
begin
 AddToLog(ParamValueMsg + Param + InRegSectMsg + Root + CorrectMsg);
 Inc(KeysFixed);
end;

procedure RestoreStrParam(Root, Param, Value: String);
begin
 RegKeyStrParamWrite('HKLM', Root, Param, Value);
 RestoredMsg(Root, Param);
end;

procedure CheckAndRestoreStrParam(Root, Param, Value: String);
begin
 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', Root, Param)
  then RestoreStrParam(Root, Param, Value);
end;

procedure CheckAndRestoreIntParam(Root, Param: String; Value: Integer);
begin
 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', Root, Param) then
  begin
  RegKeyIntParamWrite('HKLM', Root, Param, Value);
  RestoredMsg(Root, Param);
  end;
end;

procedure CheckAndRestoreMultiSZParam(Param, Value: String);
begin
 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', RootStr, Param)
  then
  begin
    ExecuteFile('REG ADD HKLM\' + RootStr + ' /v ' + Param + Value, '', 0, 10000, true);
    RestoredMsg(RootStr, Param);
  end;
end;

// Исправление значения параметра ImagePath для служб 'wuauserv' и 'BITS'
procedure ImagePathFix(Node, Srv: String);
var RegStr: String;
begin
 RegStr:= 'SYSTEM\' + Node + '\Services\' + Srv;
 if RegKeyExistsEx('HKLM', RegStr) then
  begin
  Inc(AllKeys);
  RegKeyResetSecurity('HKLM', RegStr);
  RegKeyStrParamWrite('HKLM', RegStr, 'ImagePath', ImagePathStr);
  FixedMsg(RegStr, 'ImagePath');
  end;
end;

{ Выполнение исправление всех ключей в ветках -
  'HKLM\SYSTEM\CurrentControlSet\Services\BITS' и 'HKLM\SYSTEM\CurrentControlSet\Services\wuauserv'}
procedure CorrectRegistryRoot(DescriptionText, DisplayNameText, Srv: String);
var FileServiceDll, CCSNumber: string;
    i : integer;
begin
 if Srv = 'BITS'
  then FileServiceDll := FullPathSystem32 + 'qmgr.dll'
  else FileServiceDll := FullPathSystem32 + 'wuauserv.dll';
 RootStr:= 'SYSTEM\CurrentControlSet\Services\' + Srv;

 CheckAndRestoreSection(RootStr);

 CheckAndRestoreStrParam(RootStr, 'Description', DescriptionText);
 CheckAndRestoreStrParam(RootStr, 'DisplayName', DisplayNameText);
 CheckAndRestoreStrParam(RootStr, 'ObjectName', 'LocalSystem');

 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', RootStr, 'ImagePath')
  then RestoreStrParam(RootStr, 'ImagePath', ImagePathStr)
  else
  begin
    Dec(AllKeys);
    if LowerCase(RegKeyStrParamRead('HKLM', RootStr, 'ImagePath')) <> LowerCase(ImagePathStr)
    then
      for i:= 0 to 999 do
      begin
        if i > 0
        then CCSNumber:= FormatFloat('ControlSet000', i)
        else CCSNumber:= 'CurrentControlSet';
        ImagePathFix(CCSNumber, Srv);
        end;
  end;

 CheckAndRestoreIntParam(RootStr, 'ErrorControl', 1);
 CheckAndRestoreIntParam(RootStr, 'Start', 2);
 CheckAndRestoreIntParam(RootStr, 'Type', 32);

 if Srv = 'BITS'
  then
  begin
    CheckAndRestoreMultiSZParam('DependOnService', ' /t REG_MULTI_SZ /d RpcSs');
    CheckAndRestoreMultiSZParam('DependOnGroup', ' /t REG_MULTI_SZ');
  end;

 SubRootStr:= RootStr + '\Enum';
 CheckAndRestoreSubSection;

 CheckAndRestoreStrParam(SubRootStr, '0', 'Root\LEGACY_' + UpperCase(Srv) + '\0000');
 CheckAndRestoreIntParam(SubRootStr, 'Count', 1);
 CheckAndRestoreIntParam(SubRootStr, 'NextInstance', 1);

 SubRootStr := RootStr + '\Security';
 CheckAndRestoreSubSection;

 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', SubRootStr, 'Security') then
  begin
  RegKeyBinParamWrite('HKLM', SubRootStr, 'Security', '01,00,14,80,78,00,00,00,84,00,00,00,14,00,00,00,30,00,00,00,02,00,1c,00,01,00,00,00,02,80,14,00,ff,00,0f,00,01,01,00,00,00,00,00,01,00,00,00,00,02,00,48,00,03,00,00,00,00,00,14,00,9d,00,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,00,14,00,ff,01,0f,00,01,01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00');
  RestoredMsg(SubRootStr, 'Security');
  end;

 SubRootStr:= RootStr + '\Parameters';
 CheckAndRestoreSubSection;

 Inc(AllKeys);
 if not RegKeyParamExists('HKLM', SubRootStr, 'ServiceDll')
  then
  begin
  RegKeyParamWrite('HKLM', SubRootStr, 'ServiceDll', 'REG_EXPAND_SZ', FileServiceDll);
  RestoredMsg(SubRootStr, 'ServiceDll');
  end
  else
    if LowerCase(RegKeyStrParamRead('HKLM', SubRootStr, 'ServiceDll')) <> LowerCase(FileServiceDll)
    then
      begin
      RegKeyParamWrite('HKLM', SubRootStr, 'ServiceDll', 'REG_EXPAND_SZ', FileServiceDll);
      FixedMsg(SubRootStr, 'ServiceDll');
      end
end;

{ Главное выполнение }
begin
 ClearLog;
 ExpRegKey('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'wuauserv.reg');
 ExpRegKey('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS', 'BITS.reg');
 LangID:= RegKeyStrParamRead('HKLM', 'SYSTEM\CurrentControlSet\Control\Nls\Language', 'InstallLanguage');
 if LangID = '0419'
  then
  begin
    DescriptionTextWuauServ:= 'Включает загрузку и установку обновлений Windows. Если служба отключена, то на этом компьютере нельзя будет использовать возможности автоматического обновления или веб-узел Центра обновления Windows.';
    DispayNameTextWuauServ:= 'Автоматическое обновление';
    DescriptionTextBITS:= 'Обеспечивает передачу данных между клиентами и серверами в фоновом режиме. Если служба BITS отключена, такие возможности, как Windows Update, не могут правильно работать.';
    DispayNameTextBITS:= 'Фоновая интеллектуальная служба передачи (BITS)';
    AddToLog('Операционная система - русская');
    FinishMsg:= '–––– Восстановление завершено ––––';
    RestoreMsg:= 'Восстановлено разделов\параметров: ';
    FixMsg:= 'Исправлено параметров: ';
    CheckMsg:= 'Проверено разделов\параметров: ';
    RegSectMsg:= 'Раздел реестра HKLM\';
    ParamMsg:= 'Параметр ';
    ParamValueMsg:= 'Значение параметра ';
    InRegSectMsg:= ' в разделе реестра HKLM\';
    CorrectMsg:= ' исправлено на оригинальное.';
    RestMsg:= ' восстановлен.';
  end
  else
  if LangID = '0409'
    then
    begin
      DescriptionTextWuauServ:= 'Enables the download and installation of Windows updates. If this service is disabled, this computer will not be able to use the Automatic Updates feature or the Windows Update Web site.';
      DispayNameTextWuauServ := 'Automatic Updates';
      DescriptionTextBITS:= 'Transfers data between clients and servers in the background. If BITS is disabled, features such as Windows Update will not work correctly.';
      DispayNameTextBITS:= 'Background Intelligent Transfer Service';
      AddToLog('Operation system - english');
      FinishMsg:= '–––– Restoration finished ––––';
      RestoreMsg:= 'Sections\parameters restored: ';
      FixMsg:= 'Parameters corrected: ';
      CheckMsg:= 'Sections\parameters checked: ';
      RegSectMsg:= 'Registry section HKLM\';
      ParamMsg:= 'Parameter ';
      ParamValueMsg:= 'Value of parameter ';
      InRegSectMsg:= ' in registry section HKLM\';
      CorrectMsg:= ' corrected on original.';
      RestMsg:= ' restored.';
    end;
 AddToLog('');

{ Определение папки X:\Windows\System32\ }
 NameFolderSystem32:= RegKeyStrParamRead('HKLM', 'SYSTEM\CurrentControlSet\Control\Windows', 'SystemDirectory');
 ImagePathStr:= NameFolderSystem32 + '\svchost.exe -k netsvcs';
 Delete(NameFolderSystem32, 1, pos('\', NameFolderSystem32) - 1);
 FullPathSystem32:= GetEnvironmentVariable('WinDir') + NameFolderSystem32 + '\';

 AllRoots:= 0;
 AllKeys:= 0;
 RootsRestored:= 0;
 KeysRestored:= 0;
 KeysFixed:= 0;

 CorrectRegistryRoot(DescriptionTextBITS, DispayNameTextBITS, 'BITS');
 CorrectRegistryRoot(DescriptionTextWuauServ, DispayNameTextWuauServ, 'wuauserv');

 AddToLog('');
 AddToLog(FinishMsg);
 AddToLog('');
 AddToLog(RestoreMsg + IntToStr(RootsRestored) + ' \ ' + IntToStr(KeysRestored));
 AddToLog(FixMsg + IntToStr(KeysFixed));
 AddToLog(CheckMsg + IntToStr(AllRoots) + ' \ ' + IntToStr(AllKeys));
 SaveLog(RegKeyStrParamRead('HKEY_CURRENT_USER', 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'Desktop') + '\Correct_wuauserv&BITS.log');
end.

После выполнения скрипта на рабочем столе появится текстовый файл Correct_wuauserv&BITS. Его необходимо прикрепить к следующему посту в теме где вам оказывает помощь. ]]>
FAQ akoK http://virusnet.info/forum/showthread.php?t=9188