อาการ
ถ้าคอมพิวเตอร์ของคุณไม่ได้เรียกใช้ 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
-
ในกล่องชื่อพิมพ์ทดสอบและจากนั้น คลิกตกลง
-
บนหน้ายินดีต้อนรับสู่ตัวช่วยสร้างโปรแกรมประยุกต์ 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:
-
บนเมนูโครงการคลิกทดสอบคุณสมบัติ
-
ในบานหน้าต่างด้านซ้าย คลิกสองครั้งที่ตัวเชื่อมโยงข้อมูล
-
ภายใต้ตัวเชื่อมโยงเขตคลิกป้อนเข้า
-
ในบานหน้าต่างด้านขวา พิมพ์winhttp.libในฟิลด์อ้างอิงเพิ่มเติมและจากนั้น คลิกตกลง
-
ที่เมนู สร้าง ให้คลิก สร้างโซลูชัน
-
กด CTRL + F5 เพื่อเรียกใช้โปรแกรมโดยไม่ดีบัก คุณได้รับข้อความแสดงข้อผิดพลาดที่กล่าวถึงในส่วน "อาการ"
อ้างอิง
สำหรับข้อมูลเพิ่มเติม โปรดแวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft Developer Network (MSDN):