亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#修改MAC地址類的實例

2020-01-24 03:32:24
字體:
來源:轉載
供稿:網友

1.更新MAC地址

  將注冊表中的鍵值添加上MAC地址

2.重新連接網絡
  試過了3個方法:
   ManagementClass最新提供了Disable,Enable方法,但只支持Vista操作系統
   Shell.dll的方法,可以實現,但處理起來很煩,另外在重新連接時顯示“啟動中”提示框,不友好。
 NetSharingManagerClass 的Disconnect, Connect方法,可以實現,但有一個問題是,會重新更新IP地址,有明顯感覺等。

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
using System.Net.NetworkInformation;
using System.Management;
using System.Threading;
using System.Runtime.InteropServices;
using NETCONLib;
namespace DynamicMAC
{
    public class MACHelper
    {
        [DllImport("wininet.dll")]
        private extern static bool InternetGetConnectedState(int Description, int ReservedValue);
        /// <summary>
        /// 是否能連接上Internet
        /// </summary>
        /// <returns></returns>
        public bool IsConnectedToInternet()
        {
            int Desc = 0;
            return InternetGetConnectedState(Desc, 0);
        }
        /// <summary>
        /// 獲取MAC地址
        /// </summary>
        public string GetMACAddress()
        {
            //得到 MAC的注冊表鍵
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}");
            IList<string> list = macRegistry.GetSubKeyNames().ToList();
            IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            var adapter = nics.First(o => o.Name == "本地連接");
            if (adapter == null)
                return null;
            return string.Empty;
        }
        /// <summary>
        /// 設置MAC地址
        /// </summary>
        /// <param name="newMac"></param>
        public void SetMACAddress(string newMac)
        {
            string macAddress;
            string index = GetAdapterIndex(out macAddress);
            if (index == null)
                return;
            //得到 MAC的注冊表鍵
            RegistryKey macRegistry = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Control")
                .OpenSubKey("Class").OpenSubKey("{4D36E972-E325-11CE-BFC1-08002bE10318}").OpenSubKey(index, true);
            if (string.IsNullOrEmpty(newMac))
            {
                macRegistry.DeleteValue("NetworkAddress");
            }
            else
            {
                macRegistry.SetValue("NetworkAddress", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("Default", newMac);
                macRegistry.OpenSubKey("Ndi", true).OpenSubKey("params", true).OpenSubKey("NetworkAddress", true).SetValue("ParamDesc", "Network Address");
            }
            Thread oThread = new Thread(new ThreadStart(ReConnect));//new Thread to ReConnect
            oThread.Start();
        }
        /// <summary>
        /// 重設MAC地址
        /// </summary>
        public void ResetMACAddress()
        {
            SetMACAddress(string.Empty);
        }
        /// <summary>
        /// 重新連接
        /// </summary>
        private void ReConnect()
        {
            NetSharingManagerClass netSharingMgr = new NetSharingManagerClass();
            INetSharingEveryConnectionCollection connections = netSharingMgr.EnumEveryConnection;
            foreach (INetConnection connection in connections)
            {
                INetConnectionProps connProps = netSharingMgr.get_NetConnectionProps(connection);
                if (connProps.MediaType == tagNETCON_MEDIATYPE.NCM_LAN)
                {
                    connection.Disconnect(); //禁用網絡
                    connection.Connect();    //啟用網絡
                }
            }
        }
        /// <summary>
        /// 生成隨機MAC地址
        /// </summary>
        /// <returns></returns>
        public string CreateNewMacAddress()
        {
            //return "0016D3B5C493";
            int min = 0;
            int max = 16;
            Random ro = new Random();
            var sn = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}",
               ro.Next(min, max).ToString("x"),//0
               ro.Next(min, max).ToString("x"),//
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),//5
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),
               ro.Next(min, max).ToString("x"),//10
               ro.Next(min, max).ToString("x")
                ).ToUpper();
            return sn;
        }
        /// <summary>
        /// 得到Mac地址及注冊表對應Index
        /// </summary>
        /// <param name="macAddress"></param>
        /// <returns></returns>
        public string GetAdapterIndex(out string macAddress)
        {
            ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection colMObj = oMClass.GetInstances();
            macAddress = string.Empty;
            int indexString = 1;
            foreach (ManagementObject objMO in colMObj)
            {
                indexString++;
                if (objMO["MacAddress"] != null && (bool)objMO["IPEnabled"] == true)
                {
                    macAddress = objMO["MacAddress"].ToString().Replace(":", "");
                    break;
                }
            }
            if (macAddress == string.Empty)
                return null;
            else
                return indexString.ToString().PadLeft(4, '0');
        }
        #region Temp
        public void noting()
        {
            //ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapter");
            ManagementObjectCollection colMObj = oMClass.GetInstances();
            foreach (ManagementObject objMO in colMObj)
            {
                if (objMO["MacAddress"] != null)
                {
                    if (objMO["Name"] != null)
                    {
                        //objMO.InvokeMethod("Reset", null);
                        objMO.InvokeMethod("Disable", null);//Vista only
                        objMO.InvokeMethod("Enable", null);//Vista only
                    }
                    //if ((bool)objMO["IPEnabled"] == true)
                    //{
                    //    //Console.WriteLine(objMO["MacAddress"].ToString());
                    //    //objMO.SetPropertyValue("MacAddress", CreateNewMacAddress());
                    //    //objMO["MacAddress"] = CreateNewMacAddress();
                    //    //objMO.InvokeMethod("Disable", null);
                    //    //objMO.InvokeMethod("Enable", null);
                    //    //objMO.Path.ReleaseDHCPLease();
                    //    var iObj = objMO.GetMethodParameters("EnableDHCP");
                    //    var oObj = objMO.InvokeMethod("ReleaseDHCPLease", null, null);
                    //    Thread.Sleep(100);
                    //    objMO.InvokeMethod("RenewDHCPLease", null, null);
                    //}
                }
            }
        }
        public void no()
        {
            Shell32.Folder networkConnectionsFolder = GetNetworkConnectionsFolder();
            if (networkConnectionsFolder == null)
            {
                Console.WriteLine("Network connections folder not found.");
                return;
            }
            Shell32.FolderItem2 networkConnection = GetNetworkConnection(networkConnectionsFolder, string.Empty);
            if (networkConnection == null)
            {
                Console.WriteLine("Network connection not found.");
                return;
            }
            Shell32.FolderItemVerb verb;
            try
            {
                IsNetworkConnectionEnabled(networkConnection, out verb);
                verb.DoIt();
                Thread.Sleep(1000);
                IsNetworkConnectionEnabled(networkConnection, out verb);
                verb.DoIt();
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// Gets the Network Connections folder in the control panel.
        /// </summary>
        /// <returns>The Folder for the Network Connections folder, or null if it was not found.</returns>
        static Shell32.Folder GetNetworkConnectionsFolder()
        {
            Shell32.Shell sh = new Shell32.Shell();
            Shell32.Folder controlPanel = sh.NameSpace(3); // Control panel
            Shell32.FolderItems items = controlPanel.Items();
            foreach (Shell32.FolderItem item in items)
            {
                if (item.Name == "網絡連接")
                    return (Shell32.Folder)item.GetFolder;
            }
            return null;
        }
        /// <summary>
        /// Gets the network connection with the specified name from the specified shell folder.
        /// </summary>
        /// <param name="networkConnectionsFolder">The Network Connections folder.</param>
        /// <param name="connectionName">The name of the network connection.</param>
        /// <returns>The FolderItem for the network connection, or null if it was not found.</returns>
        static Shell32.FolderItem2 GetNetworkConnection(Shell32.Folder networkConnectionsFolder, string connectionName)
        {
            Shell32.FolderItems items = networkConnectionsFolder.Items();
            foreach (Shell32.FolderItem2 item in items)
            {
                if (item.Name == "本地連接")
                {
                    return item;
                }
            }
            return null;
        }
        /// <summary>
        /// Gets whether or not the network connection is enabled and the command to enable/disable it.
        /// </summary>
        /// <param name="networkConnection">The network connection to check.</param>
        /// <param name="enableDisableVerb">On return, receives the verb used to enable or disable the connection.</param>
        /// <returns>True if the connection is enabled, false if it is disabled.</returns>
        static bool IsNetworkConnectionEnabled(Shell32.FolderItem2 networkConnection, out Shell32.FolderItemVerb enableDisableVerb)
        {
            Shell32.FolderItemVerbs verbs = networkConnection.Verbs();
            foreach (Shell32.FolderItemVerb verb in verbs)
            {
                if (verb.Name == "啟用(&A)")
                {
                    enableDisableVerb = verb;
                    return false;
                }
                else if (verb.Name == "停用(&B)")
                {
                    enableDisableVerb = verb;
                    return true;
                }
            }
            throw new ArgumentException("No enable or disable verb found.");
        }
        #endregion
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久夜色精品国产欧美乱| 中文字幕日韩电影| 欧美日韩美女在线观看| 欧美日韩一区免费| 国产精品九九久久久久久久| 亚洲成年人影院在线| 国产一区在线播放| 欧美又大又硬又粗bbbbb| 欧美成人激情视频免费观看| 国产丝袜一区二区三区免费视频| 日韩国产中文字幕| 欧美性理论片在线观看片免费| 亚洲va电影大全| 欧美成人免费全部| 国产精品久久久久久久久| 上原亚衣av一区二区三区| 在线成人一区二区| 国语自产偷拍精品视频偷| www.欧美视频| 日韩暖暖在线视频| 中文字幕亚洲欧美日韩2019| 国产精品看片资源| 成人疯狂猛交xxx| 国产精品免费福利| 日韩男女性生活视频| 亚洲人成在线一二| 欧美大片欧美激情性色a∨久久| 欧美激情免费在线| 不卡av日日日| 色av中文字幕一区| 另类专区欧美制服同性| 欧美一性一乱一交一视频| 欧美高清视频在线播放| 国产aaa精品| 久青草国产97香蕉在线视频| 97av视频在线| 91免费高清视频| 久久久久久国产三级电影| 国产精品欧美一区二区三区奶水| 日韩中文字幕在线免费观看| 国产精品电影一区| 久久综合电影一区| 国产在线观看精品一区二区三区| 久久精品在线视频| 国产精品久久久av| 久久频这里精品99香蕉| 欧美激情精品久久久久久蜜臀| 国产精品久久久久999| 国产精品对白刺激| 97精品欧美一区二区三区| 国产一区二区日韩| 日韩欧美在线免费观看| 国产精品黄色影片导航在线观看| 欧美肥臀大乳一区二区免费视频| 久久久久北条麻妃免费看| 欧美日韩中文字幕| 国产精品亚洲自拍| 亚洲va码欧洲m码| 亚洲成人亚洲激情| 国产日韩av在线播放| 欧美极品美女视频网站在线观看免费| 欧美极品少妇xxxxⅹ免费视频| 国产色婷婷国产综合在线理论片a| 欧美精品国产精品日韩精品| 成人疯狂猛交xxx| 国产在线a不卡| 国产成人激情小视频| 少妇高潮久久久久久潘金莲| 国产精品欧美亚洲777777| 国产精品视频一区国模私拍| 欧美性猛交99久久久久99按摩| 668精品在线视频| 91久久在线播放| 日韩电视剧在线观看免费网站| 国产精品99久久99久久久二8| 欧美精品一区在线播放| 国产精品久久久久久久久久免费| 亚洲小视频在线| 久久91超碰青草是什么| 亚洲色图av在线| 88国产精品欧美一区二区三区| 欧美一级电影在线| 精品久久久久久电影| 亚洲人成网在线播放| 国产精品日日摸夜夜添夜夜av| 精品国产欧美一区二区五十路| 最近2019中文免费高清视频观看www99| 91亚洲国产成人久久精品网站| 亚洲无av在线中文字幕| 色妞欧美日韩在线| 91久久精品美女| 亚洲丁香婷深爱综合| 日韩一区二区av| 色悠悠国产精品| 精品动漫一区二区| 欧美丰满少妇xxxxx做受| 欧美在线一级va免费观看| 欧美激情中文网| 日韩欧美亚洲范冰冰与中字| 亚洲伊人一本大道中文字幕| 国产成人福利夜色影视| 欧美日韩在线观看视频小说| 欧美日韩精品在线视频| 日韩大片免费观看视频播放| 中文字幕在线精品| 国产精品久久久久久久久| 亚洲aⅴ日韩av电影在线观看| 日韩中文字幕在线视频| 中文字幕av一区中文字幕天堂| 久久人人爽人人爽人人片亚洲| 热re99久久精品国产66热| 久久成人亚洲精品| 成人黄色网免费| 国产精品嫩草影院久久久| 亚洲欧美日韩天堂| 亚洲成人av在线| 日韩激情视频在线| 日韩免费av一区二区| 成人免费看片视频| 亚洲美女在线视频| 欧美综合国产精品久久丁香| 26uuu久久噜噜噜噜| 欧美精品在线免费观看| 69视频在线播放| 亚洲电影av在线| 日韩hd视频在线观看| 欧美日韩在线免费观看| 欧美日韩激情视频8区| 97超级碰碰人国产在线观看| 一区二区三区日韩在线| 亚洲a中文字幕| 欧美日韩中文在线| 国产精品日日摸夜夜添夜夜av| 日韩在线播放av| 国产精品亚发布| 久久精品人人做人人爽| 亚洲美女在线视频| 国产成人欧美在线观看| 国产精品1234| 久久久久999| 日韩中文字幕免费视频| 亚洲欧美一区二区三区久久| 日韩在线视频中文字幕| 久久精品国产免费观看| 欧美激情性做爰免费视频| 亚洲欧美日韩综合| 亚洲天堂成人在线视频| 日韩精品极品毛片系列视频| 日韩av电影手机在线| 成人福利在线视频| 日本精品一区二区三区在线| 亚洲第五色综合网| 日韩中文在线不卡| 在线成人中文字幕| 国产视频一区在线| 欧美午夜精品久久久久久人妖| 国产一区香蕉久久| 久久这里有精品| 国产精品久久久久91| 久久免费在线观看| 国产日韩欧美日韩| 国内精品久久久久影院 日本资源| 欧美一区二区三区四区在线| 青青草精品毛片|