winhttprequest.5.1을 사용하기 전에 Windows Server 2008에 Winhttp를 등록해야합니까?
-
08-07-2019 - |
문제
기본적으로 나는 이것이 Windows Server 2008의 버그라고 생각하지만, 나는 com 닌자가 아니기 때문에 멍청한 일을하고있을 것 같습니다. 질문은 : 버그 또는 프로그래밍 오류?
우리는 winhttprequest (winhttp의 ActiveX 구성 요소)를 사용하여 http : // 및 https : //를 읽습니다. 우리가 구성 요소를 찾기 위해 사용하는 프로그램은 WinHttp.WinHttpRequest.5.1
.
우리의 응용 프로그램은 XP 및 Windows Server 2003에서 잘 작동했습니다. Windows Server 2008에서는 오류가 발생합니다 (0x800029C4A "Error loading type library/DLL"
) 유형 라이브러리로드. winhttp를 다시 등록하면 문제가 해결됩니다. 문제는 왜?
수많은 데드 엔드 후, 나는 레지스트리에서 다음을 발견했습니다.
설치된 Windows 2008 서버 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 설치를 사용했습니다.
그래서 나는 이것이 버그라고 생각하고 Microsoft와 함께 버그를 제출했습니다 (또는 적어도 Connect.microsoft.com 인 Swamp에서 할 수있는만큼 할 수있는만큼.) 여기에 얻지 못하는 부분은 다음과 같습니다. Windows 서버 이후. 2008 년과 Vista는 매우 비슷합니다.이 문제는 Vista에도 존재하는 것 같습니다. winhttprequest는 일반적으로 사용되는 객체가되어야합니다. 대중은 비명을 지르고 있어야하지만 많은 인터넷 검색 후에 나는 찾았습니다. 사람들 이이 문제에 직면 한 스레드는 하나뿐입니다.
winhttp를 다시 등록하면 문제가 해결되므로 이것이 우리가하는 일입니다. a)이 일반적으로 사용되는 구성 요소를 다시 등록하는 것이 가장 좋은 관행이라고 믿을 수 없기 때문에 이것을 게시하고 있습니다. b) 버그 인 경우 다른 사람에게 도움이 될 것입니다.
-로브
해결책
그렇습니다. 이것은 W2K8의 매니페스트에서 버그로 판명되었지만 반드시 Vista의 명시 적은 아닙니다. Microsoft는이 문제를 알고있는 것으로 보이며 Microsoft는 다음 릴리스 에서이 문제를 해결할 수 있어야합니다. Winhttp 및 ServerXMLHTTP의 현재 작업은 COM 구성 요소를 수동으로 등록하는 것입니다.