winhttprequest.5.1을 사용하기 전에 Windows Server 2008에 Winhttp를 등록해야합니까?

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

문제

기본적으로 나는 이것이 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 구성 요소를 수동으로 등록하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top