gpt4 book ai didi

c++ - "Is there a better way?"Windows Vista 上的 wininet 错误 12029

转载 作者:可可西里 更新时间:2023-11-01 10:30:43 29 4
gpt4 key购买 nike

在 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 很可能不太愿意阻止您的程序。


编辑:除了按照我在下面的评论中建议的那样单独测试 MFC 片段之外,可能值得尝试使用标准的 WinAPI 方式——想法是,如果 wininet 库有问题在您的计算机上,此代码也应该无法连接:

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com