zoukankan      html  css  js  c++  java
  • C# 实现启用或停止本地网络连接

    获取本机网络连接列表

    public static List<string> GetNetList()
    {
    List<string> ls = new List<string>();
    ManagementClass vNetworkAdapter = new ManagementClass("Win32_NetworkAdapter");
    ManagementObjectCollection vNetworkAdapters = vNetworkAdapter.GetInstances();
    foreach (ManagementObject vNetworkAdapterInfo in vNetworkAdapters)
    {
    if (vNetworkAdapterInfo.Properties["NetConnectionID"].Value!=null)
    {
    ls.Add(vNetworkAdapterInfo.Properties["NetConnectionID"].Value.ToString());
    //sb.AppendLine("NetConnectionID:" + vNetworkAdapterInfo.Properties["NetConnectionID"].Value);
    //sb.AppendLine("Caption:" + vNetworkAdapterInfo.Properties["Caption"].Value);
    //sb.AppendLine("Description:" + vNetworkAdapterInfo.Properties["Description"].Value);
    }

    }
    //return sb.ToString();
    return ls;
    }

    首先添加Microsoft Shell Control And Automation引用,如果你不知道怎么添加Microsoft Shell Control And Automation引用,请参考一下步骤:
    在你的解决方案资源管理器的bin上右键->选择添加引用->选择->COM标签->找到这个引用按确定即可

    然后就可以编写代码了:

     
    static void Main(string[] args)
    {
    NetWork("本地连接", "启用");
    }
    ///
    /// 实现启用或停用本地网络链接
    ///
    /// 本地连接名称
    /// 操作,传入“启用”或“停用”
    static void NetWork(string netWorkName, string operation)
    {
    Shell32.Shell shell = new Shell32.ShellClass();
    Shell32.Folder folder = shell.NameSpace(49);
    foreach (Shell32.FolderItem fi in folder.Items())
    {
    if (fi.Name != netWorkName)
    continue;
    Shell32.ShellFolderItem folderItem = (Shell32.ShellFolderItem)fi;
    foreach (Shell32.FolderItemVerb fiv in folderItem.Verbs())
    {
    if (!fiv.Name.Contains(operation))
    continue;
    else
    {
    fiv.DoIt();
    Thread.Sleep(1000);
    break;
    }
    }
    }
    }
     

    代码说明:

    NetWork方法的两个参数说明:第一个为要进行操作的本地连接名称,第二个为你要进行的操作,传入“启用”或“停用”(win2000下可能是“禁用”)

    这个方法的原理是先找到“网络连接”这个虚拟文件夹,其中shell.NameSpace(49)中的49据说是为了避免遍历控制面板,我没有测试过,有兴趣的朋友可以试试。然后找到要控制的本地连接对应的folderitem,然后枚举verb,找到需要的verb后,调用verb的DoIt方法,在DoIt的时候加了一个Thread.Sleep(1000); 是为了使程序不会由于遍历的太快而使操作失效

  • 相关阅读:
    iOS开发学习树
    iOS开发数据库篇—FMDB数据库队列
    iOS开发数据库篇—FMDB简单介绍
    iOS开发数据库篇—SQLite常用的函数
    iOS开发数据库篇—SQLite模糊查询
    iOS开发数据库篇—SQLite的应用
    iOS开发数据库篇—SQL代码应用示例
    iOS开发数据库篇—SQL使用方法
    iOS开发数据库篇—SQLite简单介绍
    C#-汉字转拼音缩写
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/11734504.html
Copyright © 2011-2022 走看看