作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Windows Vista 上使用 MFC wininet 类时,我一直收到错误 12029(错误 INTERNET 无法连接,尝试连接到服务器失败。)。错误的原因是 Windows Defender。有没有比完全关闭 Windows Defender 更好的方法来解决这个问题?我尝试关闭“实时保护”无济于事,我不得不完全关闭 WD 以阻止 12029 错误。
如果没有更好的解决方案,希望有同样问题的其他人会看到这个问题并能够解决他们自己的问题。我上下搜索了 intertubes 并没有发现 wininet error 12029 和 WD 之间的任何交叉引用。
我的引用代码
::CInternetSession session;
::CHttpConnection* connection = session.GetHttpConnection(L"twitter.com",80,m_csUserName,m_csPassword);
::CHttpFile* httpfile = connection->OpenRequest(CHttpConnection::HTTP_VERB_GET,L"/account/verify_credentials.xml");
httpfile->SendRequest();
最佳答案
如果 Windows Defender 在阻止您的程序后显示一条警告消息,您应该可以选择将您的程序添加到“允许的项目”列表中,这将允许它在实时保护保持启用的情况下不受阻碍地运行。诚然,如果您使用的是非生产/个人代码(并且如果 Defender 甚至显示警告消息),这只是一个可行的选择。
也就是说,Defender 有可能根据您使用 wininet 库的方式检测到一些可能的风险——是否可以改用较低级别的套接字?如果这是您使用的唯一网络代码,则很容易通过通用 winsock 库复制它,并且如果您使用它而不是 wininet,Defender 很可能不太愿意阻止您的程序。
int read = 0;
char* str = "*/*", buff[1024] = {};
HINTERNET inet = InternetOpen("GRB", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!(inet=InternetConnect(inet, "twitter.com", 80, "username", "password", INTERNET_SERVICE_HTTP, 0, 0)))
cout << "conn failed" << endl;
if (!(inet=HttpOpenRequest(inet, "GET", "/account/verify_credentials.xml", NULL, NULL, (const char**)&str, 0, 0)))
cout << "open failed" << endl;
if (!HttpSendRequest(inet, NULL, 0, NULL, 0))
cout << "send failed" << endl;
InternetReadFile(inet, buff, 1023, (DWORD*)&read);
cout << buff << endl;
system("pause");
(设计为控制台程序,确保包含正确的头文件/库)
关于c++ - "Is there a better way?"Windows Vista 上的 wininet 错误 12029,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291324/
我是一名优秀的程序员,十分优秀!