.Net 6.0 Windows平台如何判断当前电脑是否联网

最近在工作中开发需要判断当前电脑是否联网的需求,在网上找了一个调用window API来判断本机是否联网。具体请看下面介绍:

1.方法一(调用winAPI)

cs 复制代码
[DllImport("wininet")]
public static extern bool InternetGetConnectedState(out int conState, int reder);

/// <summary>
/// 判断本机是否联网
/// </summary>
/// <returns></returns>
[Obsolete("当前方法不准,在以太网卡已连接状态,实际不能上网(无Internet访问),会误判为联网状态")]
public static bool CheckInternetAccessOld()
{
    return InternetGetConnectedState(out _, 0) ? true : false;
}

这个winAPI在使用以太网卡连接的时候,会存在误判的情况。(明明不能上网,却返回true)

2.方法2(获取当前网络状态)【推荐!!!】

cs 复制代码
/// <summary>
/// 检查本机是否联网,联网返回true,否则返回false
/// </summary>
/// <returns></returns>
public static bool CheckInternetAccess()
{
    var connectProfile = NetworkInformation.GetInternetConnectionProfile();
    if (null == connectProfile) return false;//没有连接的网络
    var networkLevel = connectProfile.GetNetworkConnectivityLevel();
    if (networkLevel == NetworkConnectivityLevel.InternetAccess)
        return true;//Internet 访问
    else
        return false;
}

经过对比测试,方法二可以弥补方法一以太网卡误判的情况。建议使用这种方式。

相关推荐
王维同学4 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
YCOSA20254 小时前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网
汤姆yu5 小时前
CodeGeeX 4完整安装与实操使用全指南
人工智能·windows·ai·智能体·视频模型
慧都小妮子5 小时前
Aspose.CAD for .NET 26.6 更新发布
pdf·.net·3d渲染·cad·pdf导出·ifc编辑
吐了啊取名字太难7 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
筱羽_筱羽9 小时前
VS2022 编译SOEM
windows·visualstudio·soem
夜莺悠吟11 小时前
关于对 C# 中 ImplicitUsings,GlobalUsings 的讨论
c#·.net
love530love11 小时前
【排障实录】GPT Desktop (Codex) 开启 WSL 智能体模式后无法启动?手把手教你修复
人工智能·windows·gpt·agent
WangWei_CM11 小时前
Session Manager 的 BootExecute、SetupExecute 与 Execute 多字符串解析
windows
寒水馨12 小时前
Windows 11下载、安装openclaw-v2026.7.1(附安装包OpenClawCompanion-Setup-x64.exe)
windows·大模型·开源软件·ai助手·openclaw·个人ai·中文版