Действительно ли мне нужно регистрировать WinHTTP на Windows Server 2008 перед использованием WinHttpRequest.5.1?

StackOverflow https://stackoverflow.com/questions/1639658

Вопрос

В принципе, я думаю, что это ошибка в Windows Server 2008, но я не COM ninja, поэтому в равной степени вероятно, что я просто делаю что-то глупое.Вопрос в том,:ошибка или программиста?

Мы используем WinHttpRequest (ActiveX-компонент WinHTTP) для чтения http:// и https://.Прогид, который мы используем для поиска компонента, является WinHttp.WinHttpRequest.5.1.

Наше приложение отлично работало на XP и Windows Server 2003.Под Windows Server 2008 мы бы получили сообщение об ошибке (0x800029C4A "Error loading type library/DLL") загрузка библиотеки типов.Повторная регистрация winhttp устраняет проблему.Вопрос в том, почему?

После многочисленных тупиков я нашел в реестре следующее.

Установленная версия Windows 2008 Server SP2:

Name=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{662901FC-6951-4854-9EB2-D9A2570F2B2E}\5.1\0\win32=%SystemRoot%\system32\winhttp.dll
Type=REG_SZ
Data=%SystemRoot%\system32\winhttp.dll

После вызова regsvr32 %SystemRoot%\System32\WinHttp.dll, этот ключ изменяет значение:

Name=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{662901FC-6951-4854-9EB2-D9A2570F2B2E}\5.1\0\win32
Type=REG_SZ
Data=C:\Windows\system32\winhttp.dll

Насколько я понимаю, ключи типа REG_EXPAND_SZ разверните системные пути следующим образом %SystemRoot% но REG_SZ не делай этого.Таким образом, либо тип должен быть REG_EXPAND_SZ, или следует использовать расширенный путь.Повторная регистрация WinHTTP исправляет путь и, таким образом, исправляет WinHttpRequest.(Насколько я могу судить, XP использовала C:\Windows\System32\winhttp.dll и Server 2003 использовал установку SxS, которая работает для меня> 0

Итак, я думаю, что это ошибка, и я отправил сообщение об ошибке в Microsoft (или, по крайней мере, столько, сколько я мог сделать из болота, которое есть connect.microsoft.com.) Но вот часть, которую я не понимаю:поскольку Windows Server 2008 и Vista очень похожи, представляется вероятным, что эта проблема присутствует и в Vista.WinHttpRequest должен быть широко используемым объектом.Массы должны были бы кричать, но после долгих поисков в Google я нашел только один поток, где люди сталкивались с этой проблемой.

Повторная регистрация winhttp устраняет проблему, так что это то, что мы делаем.Я публикую это, потому что а) я просто не могу поверить, что лучше всего перерегистрировать этот часто используемый компонент и б) если это ошибка, возможно, это поможет кому-то еще.

-Роб

Это было полезно?

Решение

Да, это, оказывается, ошибка в манифесте W2K8, но не обязательно в манифесте для Vista.Microsoft, похоже, знает об этой проблеме, и Microsoft должна быть в состоянии исправить это в следующем выпуске.Текущая работа для WinHTTP, а также ServerXMLHTTP заключается в ручной регистрации COM-компонента.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top