LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#修改Windows系统mac网卡地址

admin
2025年8月13日 15:52 本文热度 123

在Windows系统中修改MAC地址可以通过修改注册表或使用Windows Management Instrumentation (WMI) 实现。以下是C#代码示例,通过修改注册表实现MAC地址更改:

using System;

using Microsoft.Win32;

using System.Diagnostics;

using System.Net.NetworkInformation;


class MacAddressChanger

{

    static void Main(string[] args)

    {

        // 需要管理员权限

        if (!IsAdministrator())

        {

            Console.WriteLine("请以管理员身份运行此程序");

            return;

        }


        string interfaceName = "以太网"; // 改为你的网络连接名称(中文系统常用"以太网"/"WLAN")

        string newMacAddress = "001122334455"; // 12位十六进制MAC地址(不要分隔符)


        try

        {

            // 获取网卡ID

            string interfaceId = GetInterfaceId(interfaceName);

            if (string.IsNullOrEmpty(interfaceId))

            {

                Console.WriteLine($"找不到网络适配器: {interfaceName}");

                return;

            }


            // 修改注册表

            ChangeMacInRegistry(interfaceId, newMacAddress);


            Console.WriteLine("MAC地址修改成功!需要重启网卡生效...");


            // 重启网卡(可选)

            RestartNetworkAdapter(interfaceName);

            

            Console.WriteLine("操作完成!");

        }

        catch (Exception ex)

        {

            Console.WriteLine($"错误: {ex.Message}");

        }

    }


    // 检查管理员权限

    static bool IsAdministrator()

    {

        var identity = System.Security.Principal.WindowsIdentity.GetCurrent();

        var principal = new System.Security.Principal.WindowsPrincipal(identity);

        return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);

    }


    // 获取网络接口ID

    static string GetInterfaceId(string interfaceName)

    {

        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())

        {

            if (nic.Name.Equals(interfaceName))

            {

                return nic.Id;

            }

        }

        return null;

    }


    // 修改注册表

    static void ChangeMacInRegistry(string interfaceId, string newMacAddress)

    {

        string registryPath = $@"SYSTEM\CurrentControlSet\Control\Class\{{4d36e972-e325-11ce-bfc1-08002be10318}}";

        

        using (RegistryKey baseKey = Registry.LocalMachine.OpenSubKey(registryPath, true))

        {

            if (baseKey == null) throw new Exception("注册表路径不存在");


            foreach (string subkeyName in baseKey.GetSubKeyNames())

            {

                using (RegistryKey subKey = baseKey.OpenSubKey(subkeyName, true))

                {

                    if (subKey?.GetValue("NetCfgInstanceId")?.ToString() == interfaceId)

                    {

                        subKey.SetValue("NetworkAddress", newMacAddress, RegistryValueKind.String);

                        return;

                    }

                }

            }

        }

        throw new Exception("找不到对应的网络适配器注册表项");

    }


    // 重启网卡

    static void RestartNetworkAdapter(string interfaceName)

    {

        ProcessStartInfo psi = new ProcessStartInfo("netsh", $"interface set interface \"{interfaceName}\" disable")

        {

            WindowStyle = ProcessWindowStyle.Hidden

        };

        Process.Start(psi)?.WaitForExit();


        psi.Arguments = $"interface set interface \"{interfaceName}\" enable";

        Process.Start(psi)?.WaitForExit();

    }

}

重要说明:

1、管理员权限:程序必须以管理员身份运行(右键 → 以管理员身份运行)

2、参数修改

    • interfaceName:改为你的网络连接名称(在"网络和共享中心"查看)

    • newMacAddress:12位十六进制MAC地址(如AABBCCDDEEFF

3、生效方式

    • 代码会自动禁用/启用网卡使修改生效

    • 如果修改失败,请尝试手动重启网卡或重启计算机

4、兼容性

    • 适用于Windows 7/10/11

    • 某些网卡驱动可能不支持软件修改MAC地址

​5、注意事项

    • 修改MAC地址可能违反网络使用政策

    • 虚拟网卡和部分无线网卡可能不支持此方法

    • 部分杀毒软件会阻止注册表修改

使用步骤:

  • 获取当前网络适配器名称(在控制面板 → 网络和共享中心 → 更改适配器设置)

  • 生成合法的MAC地址(12位十六进制字符,不要包含:-

  • 以管理员身份运行程序

替代方案(WMI方法):

using System.Management;


static void SetMacAddressWMI(string interfaceName, string newMacAddress)

{

    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(

        "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId = '" + interfaceName + "'"))

    {

        foreach (ManagementObject adapter in searcher.Get())

        {

            using (adapter)

            {

                adapter.InvokeMethod("Disable", null);

                adapter.SetPropertyValue("MACAddress", newMacAddress);

                adapter.InvokeMethod("Enable", null);

            }

        }

    }

}

(需添加System.Management NuGet包)

⚠️ 注意:某些系统环境下WMI方法可能不可靠,注册表方法更稳定。

建议在实际使用前备份注册表,并确保新MAC地址符合目标网络的要求。


该文章在 2025/8/13 16:29:37 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved