Recebe uma mensagem de erro "ERROR_FILE_NOT_FOUND" quando tenta utilizar a função WinHttpGetIEProxyConfigForCurrentUser

Sintomas

Se o computador nunca executou o Microsoft Internet Explorer e utilizar a função de WinHttpGetIEProxyConfigForCurrentUser em qualquer programa, receberá a seguinte mensagem de erro:

ERROR_FILE_NOT_FOUND

Causa

A função WinHttpGetIEProxyConfigForCurrentUser utiliza a seguinte subchave de registo:

Definições de HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetEsta subchave de registo é criada da primeira vez que o Internet Explorer é executado. Se o computador não tiver executado o Internet Explorer, esta subchave de registo não existe. Quando chamar a função de WinHttpGetIEProxyConfigForCurrentUser num programa, as procuras de função para esta entrada de registo e não é possível localizar e recebe a mensagem de erro.

Resolução

Para resolver este problema, inicie o Internet Explorer e, em seguida, utilize a função de WinHttpGetIEProxyConfigForCurrentUser em qualquer programa.

Mais Informações

Passos para reproduzir o problema

  1. Inicie sessão no computador onde Internet Explorer nunca tiver sido utilizado.

  2. Inicie o Microsoft Visual Studio .NET.

  3. No menu ficheiro , aponte para Novoe, em seguida, clique em projecto.

  4. Em Tipos de projecto, clique em Projectos do Visual C++.

  5. Em modelos, clique em Projecto Win32.

  6. Na caixa nome , ensaiode tipo e, em seguida, clique em OK.

  7. Na página Bem-vindo ao Assistente de aplicação de Win32 , clique em Definições da aplicação.

  8. Em tipo de aplicação, clique em aplicação da consolae, em seguida, clique em Concluir. É criado o ficheiro Test.cpp.

  9. Substitua o código existente no ficheiro Test.cpp com o seguinte código:

    #include "stdafx.h"#include <Windows.h>#include <Winhttp.h>using namespace std;void main(){WINHTTP_CURRENT_USER_IE_PROXY_CONFIG MyProxyConfig;if(!WinHttpGetIEProxyConfigForCurrentUser(&MyProxyConfig)){//check the errorDWORD Err = GetLastError();cout << "WinHttpGetIEProxyConfigForCurrentUser failed with the following error number: " << Err << endl;switch (Err){case ERROR_FILE_NOT_FOUND:cout << "The error is ERROR_FILE_NOT_FOUND" << endl;break;case ERROR_WINHTTP_INTERNAL_ERROR:cout << "ERROR_WINHTTP_INTERNAL_ERROR" << endl;break;case ERROR_NOT_ENOUGH_MEMORY:cout << "ERROR_NOT_ENOUGH_MEMORY" << endl;break;default:cout << "Look up error in header file." << endl; }//end switch}//end ifelse{//no error so check the proxy settings and free any stringscout << "Auto Detect is: " << MyProxyConfig.fAutoDetect << endl;if(NULL != MyProxyConfig.lpszAutoConfigUrl){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszAutoConfigUrl << endl;GlobalFree(MyProxyConfig.lpszAutoConfigUrl);}if(NULL != MyProxyConfig.lpszProxy){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszProxy << endl;GlobalFree(MyProxyConfig.lpszProxy);}if(NULL != MyProxyConfig.lpszProxyBypass){wcout << "AutoConfigURL is: " << MyProxyConfig.lpszProxyBypass << endl;GlobalFree(MyProxyConfig.lpszProxyBypass);}}//end elsecout << "finished!";}//end main

    Nota O ficheiro Winhttp.h e o ficheiro Winhttp.lib exe estão incluídos no Microsoft Platform software development kit (SDK). Para transferir o Platform SDK, visite o seguinte Web site da Microsoft:

  10. No menu projecto , clique em Propriedades de ensaio.

  11. No painel da esquerda, faça duplo clique Linker.

  12. Em Linker, clique em Introdução.

  13. No painel da direita, escreva winhttp.lib no campo Dependências adicionais e, em seguida, clique em OK.

  14. No menu de criação , clique em Build Solution.

  15. Prima CTRL + F5 para executar o programa sem o depurador. Recebe a mensagem de erro mencionada na secção "Sintomas".

Referências

Para mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×