Συμπτώματα
Εάν ο υπολογιστής σας δεν έχει εκτελέσει ποτέ Microsoft Internet Explorer και χρησιμοποιείτε τη λειτουργία " WinHttpGetIEProxyConfigForCurrentUser " σε οποιοδήποτε πρόγραμμα, λαμβάνετε το ακόλουθο μήνυμα λάθους:
ERROR_FILE_NOT_FOUND
Αιτία
Η συνάρτηση WinHttpGetIEProxyConfigForCurrentUser χρησιμοποιεί το ακόλουθο δευτερεύον κλειδί μητρώου:
Ρυθμίσεις HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InternetΑυτό το δευτερεύον κλειδί μητρώου δημιουργείται την πρώτη φορά που ο Internet Explorer εκτελείται. Εάν ο υπολογιστής σας δεν διαθέτει λειτουργία του Internet Explorer, αυτό το δευτερεύον κλειδί μητρώου δεν υπάρχει. Όταν καλέσετε τη συνάρτηση WinHttpGetIEProxyConfigForCurrentUser σε ένα πρόγραμμα, η συνάρτηση αναζητά για αυτήν την καταχώρηση μητρώου και δεν μπορεί να το εντοπίσει και λαμβάνετε το μήνυμα λάθους.
Επίλυση
Για να επιλύσετε αυτό το ζήτημα, ξεκινήστε τον Internet Explorer και, στη συνέχεια, χρησιμοποιήστε τη συνάρτηση WinHttpGetIEProxyConfigForCurrentUser σε οποιοδήποτε πρόγραμμα.
Περισσότερες πληροφορίες
Βήματα για την αναπαραγωγή του ζητήματος
-
Συνδεθείτε με έναν υπολογιστή που δεν έχει χρησιμοποιηθεί ποτέ το Internet Explorer.
-
Ξεκινήστε το Microsoft Visual Studio .NET.
-
Στο μενού αρχείο , επιλέξτε Δημιουργίακαι, στη συνέχεια, κάντε κλικ στο έργο.
-
Στην περιοχή Τύπους έργων, κάντε κλικ στο Έργα του Visual C++.
-
Στην περιοχή πρότυπα, κάντε κλικ στο κουμπί Win32 έργο.
-
Στο πλαίσιο όνομα , πληκτρολογήστε Testκαι, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Στη σελίδα Καλώς ορίσατε στον Οδηγό εφαρμογή Win32 , κάντε κλικ στο κουμπί " Ρυθμίσεις εφαρμογής".
-
Στην περιοχή τύπος εφαρμογής, κάντε κλικ στο κουμπί εφαρμογή κονσόλαςκαι, στη συνέχεια, κάντε κλικ στο κουμπί Τέλος. Δημιουργείται το αρχείο Test.cpp.
-
Αντικαταστήστε τον υπάρχοντα κώδικα στο αρχείο Test.cpp με τον ακόλουθο κώδικα:
#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
Σημείωση Το αρχείο Winhttp.h και το αρχείο Winhttp.lib περιλαμβάνει την πλατφόρμα Microsoft κιτ ανάπτυξης λογισμικού (SDK). Για να λάβετε την πλατφόρμα SDK, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:
-
Στο μενού ' έργο ', κάντε κλικ στο κουμπί Ιδιότητες δοκιμής.
-
Στο αριστερό τμήμα του παραθύρου, κάντε διπλό κλικ στο πρόγραμμα σύνδεσης.
-
Κάτω από το πρόγραμμα σύνδεσης, κάντε κλικ στο κουμπί εισόδου.
-
Στο δεξιό τμήμα του παραθύρου, πληκτρολογήστε winhttp.lib στο πεδίο Επιπλέον εξαρτήσεις και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
-
Από το μενού Δημιουργία , κάντε κλικ στο κουμπί Δημιουργία λύσης.
-
Πιέστε το συνδυασμό πλήκτρων CTRL + F5 για να εκτελέσετε το πρόγραμμα χωρίς να το πρόγραμμα εντοπισμού σφαλμάτων. Λαμβάνετε το μήνυμα λάθους που αναφέρεται στην ενότητα "Συμπτώματα".
Αναφορές
Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web: