Eu realmente preciso de registrar WinHttp no Windows Server 2008 antes de usar WinHttpRequest.5.1?

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

Pergunta

Basicamente, eu acho que este é um bug no Windows Server 2008, mas não um ninja COM sou tão parece igualmente provável que eu estou fazendo algo estúpido. A questão é:? Bug ou programador de erro

Nós usamos WinHttpRequest (o componente ActiveX de WinHttp) para ler http: // e https: //. O ProgID estamos usando para procurar o componente é WinHttp.WinHttpRequest.5.1.

O aplicativo funcionou bem no XP e no Windows Server 2003. No Windows Server 2008 que teríamos um erro (0x800029C4A "Error loading type library/DLL") carregar a biblioteca tipo. Re-registrar correções WinHTTP o assunto. A pergunta é: por quê?

Depois de inúmeros becos sem saída, eu encontrei o seguinte no registro.

Windows 2008 Server SP2 como instalado:

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

Depois de chamar regsvr32 %SystemRoot%\System32\WinHttp.dll, esta tecla muda de valor:

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

O meu entendimento é que as chaves do tipo REG_EXPAND_SZ expandir caminhos do sistema como %SystemRoot% mas REG_SZ não. Assim, ou o tipo deve ser REG_EXPAND_SZ, ou o caminho expandido deve ser usado. Re-registrar WinHttp corrige o caminho e, assim, corrige WinHttpRequest. (Tanto quanto eu posso dizer, XP usado C:\Windows\System32\winhttp.dll e Server 2003 usado um SxS instalar que funciona para mim> 0

Então eu acho que esse é um problema, e eu arquivou um bug com Microsoft (ou pelo menos tanto quanto eu poderia fazer do pântano que é connect.microsoft.com.) Mas aqui é a parte que eu não entendo: desde o Windows Server 2008 e Vista são muito semelhantes, parece provável que esta questão está presente no Vista também. WinHttpRequest tem que ser um objeto comumente usado. As massas devem estar gritando, mas depois de muita googling eu encontrei apenas um segmento onde as pessoas encontrou este problema .

Re-registrar correções WinHTTP o problema, de modo que é o que estamos fazendo. Estou postando isso porque a) eu simplesmente não posso acreditar que é melhor prática para re-registrar este componente comumente usados ??e b) se é um bug, talvez isso ajude alguém.

-Rob

Foi útil?

Solução

Sim, este acaba por ser um bug no manifesto de W2K8, mas não necessariamente o manifesto para o Vista. Microsoft parece estar ciente desse problema e Microsoft deve ser capaz de corrigir isso na próxima versão. O trabalho atual em torno de WinHTTP, bem como ServerXmlHttp é registrar manualmente o componente COM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top