Triệu chứng
Nếu máy tính của bạn không chạy Microsoft Internet Explorer và bạn sử dụng chức năng WinHttpGetIEProxyConfigForCurrentUser trong bất kỳ chương trình, bạn nhận được thông báo lỗi sau:
ERROR_FILE_NOT_FOUND
Nguyên nhân
Chức năng WinHttpGetIEProxyConfigForCurrentUser sử dụng khoá con đăng ký sau:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet SettingsKhoá con đăng ký này được tạo lần đầu tiên chạy Internet Explorer. Nếu máy tính của bạn đã chạy Internet Explorer, khoá con đăng ký này không tồn tại. Khi bạn gọi hàm WinHttpGetIEProxyConfigForCurrentUser trong chương trình, chức năng tìm kiếm các mục đăng ký này và không thể tìm thấy nó, và bạn nhận được thông báo lỗi.
Giải pháp
Để khắc phục sự cố này, khởi động Internet Explorer, và sau đó sử dụng chức năng WinHttpGetIEProxyConfigForCurrentUser trong bất kỳ chương trình.
Thông tin Bổ sung
Các bước để tái tạo sự cố
-
Đăng nhập vào máy tính mà Internet Explorer không được sử dụng.
-
Bắt đầu Microsoft Visual Studio .NET.
-
Trên menu tệp , điểm đến mới, và sau đó bấm dự án.
-
Trong Dự án loại, bấm Visual C++ dự án.
-
Trong mẫu, bấm Win32 dự án.
-
Trong hộp tên , nhập kiểm travà sau đó bấm OK.
-
Trên trang chào mừng đến với thuật sĩ ứng dụng Win32 , bấm Cài đặt ứng dụng.
-
Theo loại ứng dụng, bấm bảng điều khiển ứng dụngvà sau đó bấm kết thúc. Các tập tin Test.cpp được tạo ra.
-
Thay thế mã hiện có trong tệp Test.cpp bằng mã sau:
#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
Lưu ý Tệp Winhttp.h và tệp Winhttp.lib được bao gồm trong bộ phát triển phần mềm Microsoft Platform (SDK). Để tải xuống nền tảng SDK, ghé thăm Web site sau của Microsoft:
-
Trên menu dự án , nhấp vào Kiểm tra thuộc tính.
-
Trong ngăn bên trái, bấm đúp vào Linker.
-
Trong Linker, click vào.
-
Trong ngăn bên phải, gõ winhttp.lib trường Bổ sung phụ thuộc , và sau đó bấm OK.
-
Trên menu Xây dựng, bấm Tạo Giải pháp.
-
Nhấn CTRL + F5 để chạy chương trình mà không cần trình gỡ lỗi. Bạn nhận được thông báo lỗi được đề cập trong phần "Triệu chứng".
Tham khảo
Để biết thêm thông tin, hãy truy cập trang web Mạng lưới nhà phát triển Microsoft (MSDN) sau: