I have a java script code snippet where i am making an XMLHTTP request to a remote server page. The below is my code
var objXMLdom = new ActiveXObject("Microsoft.XmlDOM")
var objXMLRecdom = new ActiveXObject("Microsoft.XmlDOM")
objXMLdom.async = false
var objXMLRoot = objXMLdom.createElement("root");
objXMLdom.documentElement = objXMLRoot;
objXMLRoot.setAttribute("strWoCode",id);
var objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
strHTTP = "getDataResponse.aspx?wocode="+strWoCode+"&mode="report";
objXMLHttp.open("POST",strHTTP,false)
objXMLHttp.send(objXMLdom);
When the last line (send()) is executing,I am getting an error like » msxml3.dll: The download of the specified resource has failed.» . My development machine is running on Win XP SP 2
Can anyone help to get rid of this ?
asked Sep 10, 2009 at 9:55
The problem is caused by your strHTTP variable. It needs to contain the full URL. Also, don’t forget to encode your strWoCode variable to prevent URL injection.
strHttp = "http://www.mywebsite.com/getDataResponse.aspx?";
strHTTP = strHTTP + "wocode="+encodeURIComponent(strWoCode)+"&mode="report";
answered Aug 4, 2011 at 3:56
jveazeyjveazey
5,3781 gold badge29 silver badges44 bronze badges
(0) У вас была установлена какая-то дополнительная программа, которая заменила версии библиотек.
Чтобы их восстановить:
1) Разрегистрируйте msxml4 с помощью утилиты regdllview-32 (см. вложение) — в списке dll ищете (Ctrl+F) msxml4,
затем правой кнопкой мыши на ней и выбираете команду Unregister Selected Files.
2) Затем снова правой кнопкой мыши по этому же файлу и выбираете команду Delete All Entries For Selected Files.
Если этого файла уже нет, то данный пункт выполнять не нужно.
3) Затем запустите RegXMLDLL.bat
Желательно выполнять действия от имени Администратора.
https://disk.yandex.ru/d/6n5XEeHQ3Y9asT
выскакивает постоянно 2 ошибки:
Или такая:
Код |
---|
{Обработка.АРМОбменСЕАИСТО.МодульОбъекта(134)}: Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Ошибка загрузки указанного ресурса. |
Или такая:
Код |
---|
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>DK_CREATE_ERROR</faultcode><faultstring>Сведения о данном ТС уже были переданы сегодня</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope> |
Причем в еисто этот авто не зарегитрирован.
Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5 (5.0.08.04)
Изменено: Тимофей Синичкин — 04.04.2014 14:52:13
Автор | Сообщение |
---|---|
Заголовок сообщения: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
|
Пытаюсь достучаться к базе биллинга (версия 5.2) из 1С через https посредством MSXML2.XMLHTTP по аналогии с описанным в документации биллинга версии 4.4 способом. Просто потому, что для новых версий соответствующий раздел отсутствует в документации. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
«Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208» |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
В старой документации предлагается генерить такую подстроку для получения результата произвольного запроса к базе биллинга(после строки подключения): |
Вернуться к началу |
|
aardvark |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
aardvark писал(а): забейте на secret он используется только для клиента. С 4.4 мог поменяться формат xml выдаваемый биллингом. с 4.6 на 5.1 точно немного менялся для договоров. Ага! На это я и надеялся (относительно secret). |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Делаю буквально следующее: Open(«POST», «https://СайтБиллинга:ПортБиллинга/bgbilling/executer?», 0) Дальше хочу послать простейший запрос для пробы — «select id from contract» Send( «user=Пользователь&pswd=Пароль&module=admin&action=SQLEditor&pageSize=100000&sql=ТекстЗапросаUrlencoded») Болт. И что уже только не делал. Результат один и тот же… |
Вернуться к началу |
|
Phricker |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Код: Функция ПослатьЗапрос( query ) i = odd.Send( «user=»+ user + «&pswd=»+ pswd + «&» + query ); // распечатка запросов и ответов, можно включить для отладки Возврат od; Функция SQLЗапрос( query ) Функция ПолучитьСписокКлиентов() Module=admin в 5.2 уже не работает кстати _________________ |
Вернуться к началу |
|
skyb |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Phricker писал(а): Помню как обновлялся на новый год на 5.2 а потом меня бухи будили когда выгрузку надо было делать первого числа в 8 утра? _________________ Код: Клиент: вер. 6.2.714 / 25.05.2015 17:27:15 Помощь по администрированию bgbilling в jabber конференции или Группа в telegram |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Phricker писал(а): Module=admin в 5.2 уже не работает кстати Так тоже делал. Та же самая ошибка. Но я вроде как докопался до корня зла. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
skn писал(а): может вам лучше напрямик в БД через ODBC драйвер ломиться? Так и делаю для других биллингов. Это запасной вариант. |
Вернуться к началу |
|
dimOn |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
рукашы писал(а): «Ошибка при вызове метода контекста (send): Произошла исключительная ситуация (msxml3.dll): Системная ошибка: -2146697208» а… понял… ошибка 1С а не биллинга. upd , ок _________________ |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
dimOn писал(а): а… понял… ошибка 1С а не биллинга. Ошибка не биллинга. Но и не 1С. Ошибка при работе через MSXML2.XMLHTTP. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Amir писал(а): Не работает только через HTTPS, или через HTTP тоже, или через HTTP проверить нет возможности? Прочитал, что подобная ошибка типична для многих сервисов, когда к ним тупо закрыт доступ (брендмауэром, например). Перепробовал все что мог — отключал брендмауэр, антивирус, в политиках безопасности лазил… Код: url = «https://Сайт:8443/bgbilling/executer?»; Т.е. простой запрос на выборку всех договоров. При вызове метода Send возникает исключение. |
Вернуться к началу |
|
Amir |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Пишут: Цитата: Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы bincacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Amir писал(а): Пишут: Цитата: Для того чтобы 1С смогла работать с самоподписным сертификатом описание корневого сертификата надо добавить в файл cacert.pem (в каталоге программы bincacert.pem). Описание можно сгенерировать с помощью бесплатной утилиты openssl. Сделал. Не помогло. Что неудивительно, в принципе. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
В общем, 1С тут точно не причем. Код: Connect = new ActiveXObject(«MSXML2.XMLHTTP»); |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Что еще можно попробовать, куда посмотреть? |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
Сертификат — да, самоподписанный. |
Вернуться к началу |
|
рукашы |
Заголовок сообщения: Re: Доступ к таблицам биллинга извне. Изменился протокол?
|
|
|
Вернуться к началу |
|
Gobo
16.04.19 — 12:10
Доброек время суток !
Не нашел открытой темы где обсуждался данный вопрос, поэтому открыл.
На клиенте установлен Windows 7 x64.
Пробовал так обращаться:
Процедура Выполнить()
ПараметрыSoap=»<soapenv:Envelope xmlns:soapenv=»»http://schemas.xmlsoap.org/soap/envelope/»»; xmlns:core=»»http://core.webservice.config.core.auction.bas.com/»»>;
|<soapenv:Header/>
|<soapenv:Body>
|<core:createEntities>
| <auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
|<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>
|<data_content>![CDATA[{«»Организации»»: [{
|»»Ref»»: «»eaf3d8f2-5207-11e5-9b29-000c293829c4″»,
|»»Код»»: «»000000001″»,
|»»Наименование»»: «»ТОО Cloudmaker»»}]}
|]]
|</data_content>
|<!—Optional:—>
|<batchId>201</batchId>
|<!—Optional:—>
|<data_type>json</data_type>
|</core:createEntities>
|</soapenv:Body>
|</soapenv:Envelope>»;
Сообщить(«ПараметрыSoap=»+ПараметрыSoap);
об = СоздатьОбъект(«MSXML2.XMLHTTP»);
об.open(«POST», «https://presale.tophr.kz/corews?wsdl»;);
об.setRequestHeader(«Content-Type», «text/xml; charset=utf-8»);
об.setRequestHeader(«SOAPAction», «http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort»;);
об.send(ПараметрыSoap);
Если об.Status=200 Тогда
ТекстОтвета = об.responseXml;
КонецЕсли;
КонецПроцедуры
Получаю ошибку:
Если об.Status=200 Тогда
{F:SOAPSENDER.ERT(45)}: msxml3.dll: Неопознанная ошибка
Отладчик показывает что объект «об» пустой.
NikVars
1 — 16.04.19 — 12:21
Обновления все установлены? Не просит обновиться или перезагрузиться после установки обновлений?
Gobo
2 — 16.04.19 — 12:27
Если вопрос на счет обновления ОС, они отключены.
MadDAD
3 — 16.04.19 — 14:29
(0) попробовать перерегистрировать «msxml3.dll» ?
serpentt
4 — 16.04.19 — 15:01
у меня по httpS не получилось послать.
craxx
5 — 16.04.19 — 15:04
(0) ощущение что XML невалидный
trad
6 — 16.04.19 — 15:47
(5) +1
1. не хватает
<?xml version=»1.0″ encoding=»windows-1251″?>
Без этого заголовка, xml по умолчанию считается в кодировке utf8
А строка с кириллицей собранная в 77 имеет кодировку ANSI.
2. <soapenv:Envelope xmlns:soapenv=»»http://schemas.xmlsoap.org/soap/envelope/»»;; xmlns:core=»»http://core.webservice.config.core.auction.bas.com/»»>;;
тут — никаких точек_с_запятой
Но у автора проблема, пока, не в этом
trad
7 — 16.04.19 — 15:50
об.open(«POST», «https://presale.tophr.kz/corews?wsdl»;;);
тут какой-то странный код
и если делаем вызов метода soap, то причем тут wsdl
trad
8 — 16.04.19 — 15:51
дурацкий форум — мудит с ;
trad
9 — 16.04.19 — 15:53
офф тест
«Строка с одной тзп»;
«http Строка с одной тзп»;
«http://Строка с одной тзп»;
trad
10 — 16.04.19 — 15:54
trad
11 — 16.04.19 — 15:56
Gobo
12 — 17.04.19 — 07:02
(6)
Исправлены,
ПараметрыSoap=»<?xml version=»»1.0″» encoding=»»windows-1251″»?>
|<soapenv:Envelope xmlns:soapenv=»»http://schemas.xmlsoap.org/soap/envelope/»»; xmlns:core=»»http://core.webservice.config.core.auction.bas.com/»»>;
|<soapenv:Header/>
|<soapenv:Body>
|<core:createEntities>
| <auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
|<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>
|<data_content>![CDATA[{«»Организации»»: [{
|»»Ref»»: «»eaf3d8f2-5207-11e5-9b29-000c293829c4″»,
|»»Код»»: «»000000001″»,
|»»Наименование»»: «»ТОО Cloudmaker»»}]}
|]]
|</data_content>
|<!—Optional:—>
|<batchId>201</batchId>
|<!—Optional:—>
|<data_type>json</data_type>
|</core:createEntities>
|</soapenv:Body>
|</soapenv:Envelope>»;
Gobo
13 — 17.04.19 — 07:03
Точки запятые форум добавляет, я без них вставлял.
Gobo
14 — 17.04.19 — 07:07
(1) Все обновления сделал, результат тот же.
Gobo
15 — 17.04.19 — 07:08
На 8-ке у меня код так реализован:
Определения = Новый WSОпределения(«адрес моего сервиса»);
Прокси = Новый WSПрокси(Определения, «http://core.webservice.com/»,»CoreWebServiceImplService»,»CoreWebServiceImplPort»);
Схема=»http://www.w3.org/2001/XMLSchema»;
ТекТекст=»Тут содержимое передаваемого документа»;
ТипXDTO_data_content = Прокси.ФабрикаXDTO.Тип(Схема, «string»);
ОбъектXDTO_data_content = Прокси.ФабрикаXDTO.Создать(ТипXDTO_data_content,ТекТекст);
ТипXDTO_batchId = Прокси.ФабрикаXDTO.Тип(Схема, «int»);
ОбъектXDTO_batchId = Прокси.ФабрикаXDTO.Создать(ТипXDTO_batchId,201);
ТипXDTO_data_type = Прокси.ФабрикаXDTO.Тип(Схема, «string»);
ОбъектXDTO_data_type = Прокси.ФабрикаXDTO.Создать(ТипXDTO_data_type,»XML»);
ДанныеОтправки = Прокси.createEntities(ОбъектXDTO_data_content, ОбъектXDTO_batchId, ОбъектXDTO_data_type);
Сообщить(ДанныеОтправки);
Gobo
16 — 17.04.19 — 07:18
(7) как мне тут указать, чтобы он вызвал метод — createEntities ?
Сервис находиться тут:
https://presale.tophr.kz/corews?wsdl
trad
17 — 17.04.19 — 08:05
Неопознанная ошибка на об.status?
Gobo
18 — 17.04.19 — 12:35
(17) да,
и объект пустой в отладчике.
trad
19 — 17.04.19 — 16:59
//*******************************************
Процедура Сформировать()
ПараметрыSoap = «<?xml version=»»1.0″» encoding=»»windows-1251″»?>
|<soapenv:Envelope xmlns:soapenv=»»http://schemas.xmlsoap.org/soap/envelope/»»; xmlns:core=»»http://core.webservice.config.core.auction.bas.com/»»>;
|<soapenv:Header/>
|<soapenv:Body>
|<core:createEntities>
|<auth_key>0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1</auth_key>
|<secret_key>8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82</secret_key>
|<data_content>![CDATA[{«»Организации»»: [{
|»»Ref»»: «»eaf3d8f2-5207-11e5-9b29-000c293829c4″»,
|»»Код»»: «»000000001″»,
|»»Наименование»»: «»ТОО Cloudmaker»»}]}
|]]
|</data_content>
|<batchId>201</batchId>
|<data_type>json</data_type>
|</core:createEntities>
|</soapenv:Body>
|</soapenv:Envelope>
|»;
Query = СоздатьОбъект(«Msxml2.XMLHTTP»);
Query.open(«POST», «https://presale.tophr.kz/corews»;, 0);
Query.setRequestHeader(«Content-Type», «text/xml; charset=windows-1251»);
Query.setRequestHeader(«SOAPAction», «http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort»;);
Query.send(ПараметрыSoap);
Если Query.status <> 200 Тогда
Сообщить(Query.status);
Сообщить(Query.statusText);
Иначе
Сообщить(«Ok»);
//Сообщить(Query.responseXml);
Сообщить(Query.responseText);
КонецЕсли;
КонецПроцедуры
trad
20 — 17.04.19 — 16:59
trad
21 — 17.04.19 — 17:00
Windows 7 32
обновления все установлены
Gobo
22 — 18.04.19 — 07:19
(19) Спасибо большое, работает !
Хочу в качестве спасибо отправить 0.003 BTC, если напишешь адрес.
Получается моя ошибка была в этой строке:
Query.open(«POST», «https://presale.tophr.kz/corews»,0);
На счет библиотеки, у клиентов могут быть с этим проблемы.
Можно эту обработку переделать на использование библиотеки — v7plus.dll ?
Ёпрст
23 — 18.04.19 — 07:34
(22) храни все нужные библиотеки в самой ert в мокселе, при старте поделкии проверяй их наличие в системе, при отсутствии извлекай и устанавливай. И v7plus.dll тоже может быть не зарегена. Проще 1cpp использовать, там есть встроенный xml
Ёпрст
24 — 18.04.19 — 07:36
Хотя, тебе нужна mxmln3 и ее методы. Храни ее и извлекай/регистрируй при необходимости
trad
25 — 18.04.19 — 09:39
(22) «Хочу в качестве спасибо отправить 0.003 BTC, если напишешь адрес.»
спасибо, не надо
trad
26 — 18.04.19 — 09:40
(23) «храни все нужные библиотеки в самой ert в мокселе,»
ТС, не делай так никогда
trad
27 — 18.04.19 — 09:46
(22) «Можно эту обработку переделать на использование библиотеки — v7plus.dll ?» можно, но я ей не пользуюсь
использую компонентами windows. на современных win все это есть
Во-первых Msxml2.XMLHTTP имеет .responseXml — там готовый DOM-документ, бери да перебирай, хочешь просто перебором, хочешь xpath-ами
Во-вторых .send(ПараметрыSoap) на вход умеет получать не только строку, но и тот же DOM-документ
trad
28 — 18.04.19 — 09:49
Gobo
29 — 18.04.19 — 11:56
(27) Да, дом это хорошо.
На VBA его часто использую.
Gobo
30 — 18.04.19 — 13:42
B код читабельнее:
[CODE]
Процедура Выполнить()myDOMdoc = СоздатьОбъект("Msxml2.DOMDocument");
myDOMdoc.appendChild(myDOMdoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251"""));elSoapenv=myDOMdoc.createElement("soapenv:Envelope");
attrEnvel = myDOMdoc.createAttribute("xmlns:soapenv");
attrEnvel.nodeValue = "http://schemas.xmlsoap.org/soap/envelope/";;
elSoapenv.setAttributeNode(attrEnvel);attrEnvel = myDOMdoc.createAttribute("xmlns:core");
attrEnvel.nodeValue = "http://core.webservice.config.core.auction.bas.com/";;
elSoapenv.setAttributeNode(attrEnvel);elHead=myDOMdoc.createElement("soapenv:Header");
elSoapenv.appendChild(elHead);elBody=myDOMdoc.createElement("soapenv:Body");
elCrentit=myDOMdoc.createElement("core:createEntities");elAuthkey=myDOMdoc.createElement("auth_key");
elAuthkey.text = "0c18fd768c0cdab0ee41d4c605314259dff9b8cf8c8e4c3a0cb1e24090482c963190d643fe58b75f1bcb45e05cd861c1";
elCrentit.appendChild(elAuthkey);elSecrkey=myDOMdoc.createElement("secret_key");
elSecrkey.text = "8724112f3bf585cbb872f77562d06920d9b613327267dbf4f9190e99f0e35a82";
elCrentit.appendChild(elSecrkey);elData=myDOMdoc.createElement("data_content");
elData.text = "<![CDATA[<Root_1C>
|<Header>
| <ExchangePlan>TestObmen</ExchangePlan>
| <To>Приемник</To>
| <From>Источник</From>
| <Root_1СNo>13</Root_1СNo>
| <ReceivedNo>0</ReceivedNo>
|</Header>
|</Root_1C>
|]]>";
elCrentit.appendChild(elData);elbatchId=myDOMdoc.createElement("batchId");
elbatchId.text = "201";
elCrentit.appendChild(elbatchId);elDatatype=myDOMdoc.createElement("data_type");
elDatatype.text = "xml";
elCrentit.appendChild(elDatatype);elBody.appendChild(elCrentit);
elSoapenv.appendChild(elBody);
myDOMdoc.appendChild(elSoapenv);
Сообщить("myDOMdoc.xml="+myDOMdoc.xml);
Query = СоздатьОбъект("MSXML2.XMLHTTP");
Query.open("POST", "https://presale.tophr.kz/corews",0);
Query.setRequestHeader("Content-Type", "text/xml; charset=windows-1251");
//Query.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
Query.setRequestHeader("SOAPAction", "http://core.webservice.config.core.auction.bas.com/#CoreWebServiceImplService:CoreWebServiceImplPort";);Query.send(myDOMdoc);
Если Query.Status<>200 Тогда
Сообщить(Query.status);
Сообщить(Query.statusText);
Иначе
Сообщить("Ok");
Сообщить(Query.responseText);
КонецЕсли;КонецПроцедуры
[/CODE]
Ёпрст
31 — 18.04.19 — 18:10
(26) почему ?
trad
32 — 19.04.19 — 09:53
(31) совершенно не нужное шаманство, усложняющее систему без необходимости
Ёпрст
33 — 19.04.19 — 11:42
(32) ааа.. я то думал, что-то религиозное, может
Если вы столкнулись с проблемой (ошибкой) при установке или получении обновлений через Windows Update или Microsoft Update, можете выполнить рекомендации, указанные ниже. Это общие рекомендации, позволяющие решить проблему в большинстве случаев, но они не дают 100% гарантии ее решения. Зачастую в первую очередь стоит начать с их выполнения прежде чем разбирать частный случай. Конкретизировать проблему вам поможет содержимое файла /WINDOWS/WindowsUpdate.log, который создается в процессе обновления системы. В чтении и понимании этого файла вам поможет статья How to read the Windowsupdate.log file
Разберем наиболее частые причины ошибок и способы их устранения.
I. Ошибки, связанные с подключением.
Симптомы: при обращении к веб-узлу Windows Update или Microsoft Update для проверки наличия и установки обновлений появляется одно из следующих сообщений об ошибке:
Код ошибки (в шестнадцатеричном формате) | Код ошибки (в десятичном формате) | Описание ошибки API |
0x80070008 | -2147024888 | ERROR_NOT_ENOUGH_MEMORY |
0x800705B4 | -2147023436 | Error_Timeout |
0x8007000E | -2147024882 | E_OUTOFMEMORY |
0x80072EE2 | -2147012894 | ERROR_INTERNET_TIMEOUT |
0x80072EFD | -2147012867 | ERROR_INTERNET_CANNOT_CONNECT |
0x80072EE7 | -2147012889 | ERROR_INTERNET_NAME_NOT_RESOLVED |
0x80072EFE | -2147012866 | ERROR_INTERNET_CONNECTION_ABORTED |
0x8024400E | -2145107954 | SUS_E_PT_SOAP_SERVER |
0x80072F76 | -2147012746 | ERROR_WINHTTP_HEADER_NOT_FOUND |
0x80244016 | -2145107946 | SUS_E_PT_HTTP_STATUS_BAD_REQUEST |
0x80072F78 | -2147012744 | ERROR_WINHTTP_INVALID_SERVER_RESPONSE |
0x80244022 | -2145107934 | SUS_E_PT_HTTP_STATUS_SERVICE_UNAVAIL |
0x80090305 | -2146893051 | SEC_E_SECPKG_NOT_FOUND |
0x8024402F | -2145107921 | WU_E_PT_ECP_SUCCEEDED_WITH_ERRORS |
0x8009033F | -2146892993 | SEC_E_Shutdown_IN_Progress |
0xC80003FA | -939523078 | hrReadVerifyFailure |
0x80244008 | -2145107960 | SUS_E_PT_SOAPCLIENT_PARSEFAULT |
0xC800042D | -939523027 | HrVersionStoreOutOfMemory |
0x8024400A | -2145107958 | SUS_E_PT_SOAPCLIENT_PARSE |
0x80071A90 | -2147018096 | ERROR_TRANSACTIONAL_CONFLICT |
0x8024400D | -2145107955 | SUS_E_PT_SOAP_CLIENT |
1.1 Первое, что необходимо сделать, после проверки доступности подключения как такового, конечно, — это временно отключить брандмауэр Windows или сторонний сетевой экран и повторить попытку получения обновлений.
Внимание! Отключение сетевого экрана снижает безопасность компьютера, поэтому после повторной попытки получения обновлений необходимое его включить.
Если отключение сетевого экрана не устранило проблему, переходите к п. 1.2
1.2 Отключите (выгрузите) антивирусное ПО на время попытки проведения обновления. Этот шаг также снижает уровень безопасности компьютера, независимо от результата следует снова включить антивирусное ПО.
Если это не помогло устранить проблему, переходите к п. 1.3
1.3 Добавьте веб-узлы Windows Update и Microsoft Update в список надежных узлов:
- Запустите Windows Internet Explorer.
- В меню Сервис выберите команду Свойства обозревателя.
Если используется Internet Explorer 7 и меню не доступно, нажмите клавишу ALT на клавиатуре, чтобы получить доступ к меню Internet Explorer. - Перейдите на вкладку Безопасность и выделите значок Надежные узлы.
- Нажмите кнопку Узлы и снимите флажок Для всех узлов этой зоны требуется проверка серверов (https:)
- В поле Добавить узел в зону введите указанные ниже адреса и затем нажмите кнопку Добавить после каждого из них.
- http://download.windowsupdate.com
- https://*.windowsupdate.microsoft.com
- http://*.windowsupdate.microsoft.com
- http://*.update.microsoft.com
- http://*.download.windowsupdate.com
- http://update.microsoft.com
- http://*.windowsupdate.com
- http://download.microsoft.com
- http://windowsupdate.microsoft.com
- http://ntservicepack.microsoft.com
- http://wustat.windows.com
- https://*.update.microsoft.com
Если этот способ не устранил неполадку, переходите к п. 1.4
1.4 Убедитесь, что на компьютере установлено последнее обновление фоновой интеллектуальной службы передачи (службы BITS 2.0 и WinHTTP 5.1)
Статья MSKB с описанием обновления и ссылками на загрузку:Обновление для Windows Server 2003, Windows XP и Windows 2000, содержащее службы BITS 2.0 и WinHTTP 5.1
Данный метод относится только к Windows 2000/XP/2003
Если неполадку не удалось устранить указанными выше способами, переходите к п. 2
2. Проверка файлов Hosts
Некоторые программы, в том числе и вредоносные, могут изменять файлы Hosts для управления расширением DNS-имен.
Чтобы удалить записи из файла Hosts, выполните следующие действия:
- Нажмите кнопку Пуск и выберите пункт Выполнить
- Скопируйте и вставьте (или введите) в поле Открыть следующую команду
notepad %windir%/system32/drivers/etc/hosts
Примечание. При приглашении выбрать программу, с помощью которой следует открыть файл Hosts, выберите Блокнот и нажмите кнопку ОК - Удалите строки файла, содержащие записи для Windows Update или Microsoft Update. Это могут быть строки, содержащие слова «microsoft» и «update». Например такие:
- 64.4.21.125 http://update.microsoft.com
- 64.4.21.125 http://windowsupdate.microsoft.com
- http://update.microsoft.com
- Сохраните отредактированный файл и перезагрузите компьютер
- Вместо перезагрузки можно очистить кэш DNS. Для этого выполните указанные ниже действия.
- Нажмите кнопку Пуск и выберите пункт Выполнить, введите cmd в поле Открыть и нажмите клавишу ВВОД.
- В командной строке введите ipconfig /flushdns и нажмите клавишу ВВОД.
3. Удаление записи прокси-сервера из настройки прокси-сервера WinHTTP
Примечание. Этот способ применяется только к Windows XP и Windows Server 2003. Данный способ не применяется к Windows Vista.
Чтобы удалить запись прокси-сервера из настройки прокси-сервера WinHTTP, выполните следующие действия.
- Запустите обозреватель Internet Explorer.
- В меню Сервис выберите команду Свойства обозревателя.
- Перейдите на вкладку Подключения и нажмите кнопкуНастройка сети.
- В диалоговом окне Настройка параметров локальной сети установите флажок Автоматическое определение параметров и нажмите кнопку ОК.
- Закройте Internet Explorer.
- Нажмите кнопку Пуск и выберите пункт Выполнить, введите в поле Открыть командуcmd и нажмите клавишу ВВОД
- Введите следующие команды. После каждой команды нажимайте клавишу ВВОД
proxycfg -d
net stop wuauserv
net start wuauserv
exit
В случае использования прокси-сервера в организации смотрите статью MSKBКак клиент Windows Update определяет, какой прокси-сервер использовать для подключения к веб-узлу Windows Update
II. Устранение определенных ошибок WU
Действия и возникновении ошибок
- 0x800A0046
- 0x80248011
- 0x8024402C
- 0x8024502D
- 0x800A01AD
Причины
Ошибка с кодом 0x800A0046 появляется по одной из следующих причин:
- Учетная запись пользователя, используемая для входа, принадлежит к группе учетных записей Гости или Пользователи.
- Дескриптор безопасности запрещает пользователям, прошедшим проверку подлинности, получать доступ к веб-узлу Windows Update или Microsoft Update.
- В списке пользователей и групп политики Олицетворять клиента после проверки подлинности отсутствует учетная запись Администратор и Служба.
Причиной ошибки с кодом 0x80248011 может быть проблема с базой данных, в которой хранятся данные о Центре обновления Windows или Центре обновления Майкрософт.
Ошибки с кодом 0x8024402C и 0x8024502D обычно появляются из-за наличия неправильных символов в параметрах переопределения прокси. Для их устранения смотрите п.3 раздела I
Ошибка с кодом 0x800A01AD появляется, когда файл Wuaueng.dll отсутствует или неправильно зарегистрирован.
1. Ошибка с кодом 0x800A0046
Чтобы устранить эту ошибку, используйте один из следующих способов.
Способ 1. Удалите учетную запись пользователя, которая вызывает ошибку, из группы Гости или Пользователи
- Выберите в меню Пуск пункт Выполнить, введите команду control admintools и нажмите кнопку ОК.
- Откройте Управление компьютером.
- Разверните узел Локальные пользователи и группы.
- Выберите раздел Пользователи.
- Откройте учетную запись, которая используется для доступа к веб-узлу Windows Update или Microsoft Update.
- Откройте вкладку Членство в группах.
- Выберите требуемую учетную запись пользователя и нажмите кнопку Удалить. При этом учетная запись должна состоять по крайней мере в одной группе.
Способ 2. Задайте дескриптор безопасности
- Выберите в меню Пуск пункт Выполнить, введите команду cmd и нажмите кнопку ОК.
- Введите команду
sc sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
и нажмите клавишу ВВОД.
Способ 3. Добавьте локальные учетные записи Администратор и Служба в политику Олицетворять клиента после проверки подлинности
- В меню Пуск выберите пункт Выполнить, введите команду secpol.msc и нажмите клавишу ВВОД.
- Разверните узел Локальные политики.
- Выберите элемент Назначение прав пользователя.
- Откройте политику Олицетворять клиента после проверки подлинности.
- На вкладке Локальные параметры безопасности нажмите кнопку Добавить пользователя или группу и добавьте Администратор иСлужба в список Пользователи и группы.
- После применения перезагрузите компьютер.
Способ 4. Настройте для службы удаленного вызова процедур (RPC) вход с системной учетной записью
- Выберите в меню Пуск пункт Выполнить, введите команду services.msc и нажмите кнопку ОК.
- Откройте свойства службы Удаленный вызов процедур (RPC)
- Откройте вкладку Вход в систему, установите переключатель С системной учетной записью
2. Ошибка с кодом 0x80248011
Перед устранением ошибки очистите кэш обозревателя Internet Explorer. Для этого выполните следующие действия:
- В меню Сервис обозревателя Internet Explorer выберите пункт Свойства обозревателя.
- На вкладке Общие в разделе Временные файлы Интернета нажмите кнопку Удалить файлы.
Чтобы устранить эту ошибку, создайте заново базу данных, в которой хранятся сведения о Windows Update или Microsoft Update. Для этого выполните следующие действия:
- Откройте меню Пуск, выберите пункт Выполнить, введите в поле Открыть команду cmd и нажмите кнопку OK.
- В командной строке введите следующую команду и нажмите клавишу ВВОД:
net stop wuauserv
- В командной строке введите следующую команду и нажмите клавишу ВВОД:
cd /d c:/Windows/SoftwareDistribution
здесь c:/Windows – это папка, в которой установлена операционная система
- В командной строке введите следующую команду, включая кавычки, и нажмите клавишу ВВОД:
rd /S /Q DataStore
- В командной строке введите следующую команду и нажмите клавишу ВВОД:
net start wuauserv
3. Ошибка с кодом 0x800A01AD
Чтобы устранить эту ошибку, выберите один из следующих способов.
Способ 1. Зарегистрируйте программные файлы MSXML
Чтобы зарегистрировать файлы MSXML, выполните следующие действия.
Примечание. Возможно, на компьютере не установлены файлы, которые указаны в действиях 3 и 5. В этом случае при попытке зарегистрировать такой файл будет получено следующее сообщение об ошибке:
Ошибка при вызове LoadLibrary(«.dll») – указанный файл не найден.
Пропустите это сообщение и переходите к выполнению следующего действия.
- Выберите в меню Пуск команду Выполнить, введите следующую команду в поле Открыть
regsvr32 Msxml.dll
- Выберите в меню Пуск команду Выполнить, введите следующую команду в поле Открыть
regsvr32 Msxml2.dll
- Выберите в меню Пуск команду Выполнить, введите следующую команду в поле Открыть
regsvr32 Msxml3.dll
Способ 2. Зарегистрируйте файл Wuaueng.dll
Чтобы зарегистрировать файл Wuaueng.dll, выполните следующие действия:
- Нажмите кнопку Пуск, выберите пункт Выполнить, введите команду
regsvr32 Wuaueng.dll
III. Сообщение об ошибке «Одно или несколько обновлений не могут быть установлены»
Эта проблема может возникать в том случае, если после установки последней версии клиента Windows Update установка пакета обновления 3 (SP3) осуществляется до перезагрузки компьютера. В результате новый файлWups2.dll оказывается незарегистрированным. Во время установки SP3 не удается обнаружить файл Wups2.dll, поэтому в реестре фиксируется исходная версия файла Wups.dll, которая содержится в Windows XP SP2 и в Windows XP SP3. Из-за отсутствия записей в реестре, соответствующих файлу Wups2.dll, установка обновлений становится невозможной.
- Остановите службу автоматического обновления:
Нажмите кнопку Пуск, выберите в меню пункт Выполнить, введите командуnet stop wuauserv
- Зарегистрируйте файл Wups2.dll:
Введите в окне командной строки (cmd) следующую команду:regsvr32 %windir%/system32/wups2.dll
На компьютере с операционной системой Windows XP Professionalx64 команда будет такой
regsvr32 %windir%/syswow64/wups2.dll
- Запустите службу автоматического обновления:
Нажмите кнопку Пуск, выберите в меню пункт Выполнить, введите командуnet start wuauserv
IV. Переустановка Windows Update Agent
Загрузите Windows Update Agent соответствующий вашей ОС:Загрузить пакет windowsupdateagent30-x86.exe- для Windows 32-bit
Загрузить пакет windowsupdateagent30-x64.exe — для Windows 64-bit Вполне вероятно прямые ссылки могут со временем измениться и версия агента также может быть обновлена, найти последнюю версию вы сможете в статьеПолучение последней версии агента обновления Windows
После загрузки поместите файл на диск C: и выполните последовательно следующие команды в cmd (в Windows Vista команду необходимо выполнять в командной строке запущенной от имени администратора):
net stop wuauserv
net stop bits
start /wait C:/WindowsUpdateAgent30-x86.exe /wuforce
Имя исполняемого файла может отличаться от указанного, если вы используете файл для Windows 64-bit
После выполнения всех трех команд перезагрузите компьютер.
V. Переустановка Windows Installer
Загрузите и установитеWindows Installer 4.5
VI. Использование утилиты AU Check
Утилита проверки и сброса (восстановления) параметров автоматического обновления, Windows Update и Microsoft Update (AU Check) способна решить большинство проблем с получением или установкой обновлений путем сброса конфигурации соответствующих параметров в значение по умолчанию.
Фактически утилита представляет из себя набор reg-файлов, cmd-файлов и VBS-сценариев, которые автоматизируют большинство из указанных выше способов решения проблемы с обновлениями. Поддерживаются следующие ОС (32 bit и 64-bit):
- Windows 2000
- Windows XP
- Windows Vista
- Windows Server 2003
- Windows Server 2008
Утилита выполнена в виде самораспаковывающегося архива. При запуске автоматически распознается версия и архитектура используемой ОС Windows и начинается сброс параметров. В общей сложности утилита может отрабатывать около 15-20 минут, а возможно и больше, многое зависит как от производительности компьютера так и от скорости подключения интернет. Кстати, подключение к интернету необходимо при использовании утилиты, поэтому использовать ее в безопасном режиме не стоит.
Учитывая довольно обширный перечень операций, выполняемых утилитой, крайне рекомендую создать точку восстановления перед ее использованием.
Примерный перечень производимых операций:
- Перерегистрация библиотек (DLL)
- Переименование каталога softwaredistribution/download
- Проверка параметров безопасности служб автоматического обновления и фоновой интеллектуальной службы передачи (BITS)
- Очистка очередь и файлы состояния фоновой интеллектуальной службы
- Перезапуск автоматического обновления и фоновой интеллектуальной службы
- Проверка некоторых параметров системного реестра.
- Создание файл updates.htm в каталоге C:/AULOGS со ссылками на необходимые обновления.
- Создание отчетов об ошибках выполнения операций в каталоге C:/AULOGS.
- Тестирование PROXYCFG и запись лога с его результатами (c:/aulogs)
- Вывод ошибок в дамп при обнаружении проблем регистрации MSXML (c:/aulogs)
- Тестирование WGA с использованием утилиты mgadial и запись результатов в лог (c:/aulogs)
Загрузить последнюю версию AU Check вы можете с этой страницы:AU Check Releases
Конечно рассмотреть все случаи возникновения неполадок с обновлениями Windows не представляется возможным да я и не ставил перед собой такой цели. Общие рекомендации, привденные здесь помогут избавиться от большинства самых распространенных неполадок, а остальные зачастую нужно разбирать более детально и каждый конкретный случай в отдельности.
Источник: pavelmvp.spaces.live.com