Muss ich wirklich WinHttp auf Windows Server 2008, bevor Sie WinHttpRequest.5.1 registrieren?
-
08-07-2019 - |
Frage
Im Grunde denke ich, das ein Fehler in Windows Server 2008 ist, aber ich bin keine COM ninja so ist es ebenso wahrscheinlich scheint, dass ich tue nur etwas dumm. Die Frage ist:? Fehler oder Programmierfehler
Wir verwenden WinHttpRequest (die ActiveX-Komponente von WinHttp) http zu lesen: // und https: //. Die ProgID wir werden mit der Komponente zu sehen ist WinHttp.WinHttpRequest.5.1
.
Unsere Anwendung hat gut funktioniert auf XP und Windows Server 2003 unter Windows Server 2008 haben wir einen Fehler erhalten würden (0x800029C4A "Error loading type library/DLL"
) die Typbibliothek zu laden. Re-Registrierung winhttp das Problem behebt. Die Frage ist, warum?
Nach zahlreichen Sackgassen, fand ich die folgenden in der Registrierung.
Windows 2008 Server SP2 als installiert:
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
Nach regsvr32 %SystemRoot%\System32\WinHttp.dll
Aufruf dieser Taste ändert Wert:
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
Mein Verständnis ist, dass die Schlüssel vom Typ REG_EXPAND_SZ
Systempfade wie %SystemRoot%
erweitern aber REG_SZ
nicht. Also entweder der Typ sollte REG_EXPAND_SZ
oder der erweiterte Pfad sollte verwendet werden. Re-Registrierung WinHttp behebt den Pfad und fixiert somit WinHttpRequest. (Soweit ich das beurteilen kann, verwendet XP C:\Windows\System32\winhttp.dll
und Server 2003 verwendet eine SxS installieren, das funktioniert für mich> 0
Also ich denke, das ist ein Fehler, und ich legte einen Fehler mit Microsoft (oder zumindest so viel wie ich aus dem Sumpf tun könnte, die connect.microsoft.com ist.) Aber hier ist der Teil ich nicht bekommen: da Windows Server 2008 und Vista sehr ähnlich ist, scheint es wahrscheinlich, dass dieses Problem auch in Vista vorhanden ist. WinHttpRequest hat bekam ein häufig verwendetes Objekt. Die Massen schreien werden sollen, aber nach vielen Googeln fand ich nur ein Thread, wo die Menschen dieses Problem angetroffen werden.
Neuregistrierung winhttp behebt das Problem, so dass das, was wir tun. Ich bin das, weil ein Posting) Ich kann einfach nicht glauben, dass es am besten Praxis ist diese häufig verwendete Komponente und b) erneut zu registrieren, wenn es einen Fehler, vielleicht wird dies jemand anders helfen.
-ROB
Lösung
Ja, wird dies aus um einen Fehler in Manifest von W2K8 sein, aber nicht unbedingt das Manifest für Vista. Microsoft scheint sich dieses Problems bewusst zu sein und Microsoft sollte dies in der nächsten Version beheben können. Aktuelle Arbeit um für WinHTTP sowie ServerXmlHttp ist, um manuell die COM-Komponente zu registrieren.