InternetCheckConnection总是返回false

我想使用Wininet函数InternetCheckConnection来检查机器何时连接到互联网,并可以访问特定的主机。 问题是这个函数总是返回false ,不pipe我放在哪个URL上。

MSDN链接

以下组合在Windows 7和Windows XP SP3上适用于我:

  InternetCheckConnection("http://www.google.com", FLAG_ICC_FORCE_CONNECTION, 0) ; 

如果连接可能,GetLastError()返回0,否则返回12029(连接到服务器的尝试失败)。

下面的组合不适合我:

  InternetCheckConnection(NULL, FLAG_ICC_FORCE_CONNECTION, 0) ; 

GetLastError()返回12016(请求的操作无效)。

  InternetCheckConnection(NULL, 0, 0) ; InternetCheckConnection(("http://www.google.com", 0, 0) ; 

为GetLastError()返回2250(网络连接无法找到)。

你检查过GetLastError()吗? 如果我正确读取MSDN,则需要检查ERROR_NOT_CONNECTED以确定您是否真正离线。

只是一个疯狂的猜测,但也许这是由于个人防火墙阻止Windows DLL和/或您的应用程序之一的所有传出连接?