C# 在Windows 7中使用C禁用NIC时获取MAC地址
我需要一种方法来检索Windows 7的机器的MAC地址时,其网络接口卡被禁用,并使用C。我在网上搜索,并参考以下链接。使用第二个链接中的答案,我可以在Windows XP中成功获得所需的详细信息,但在禁用NIC时,在Windows 7中无法获得 有人知道如何完成这项任务吗C# 在Windows 7中使用C禁用NIC时获取MAC地址,c#,windows-7,mac-address,nic,C#,Windows 7,Mac Address,Nic,我需要一种方法来检索Windows 7的机器的MAC地址时,其网络接口卡被禁用,并使用C。我在网上搜索,并参考以下链接。使用第二个链接中的答案,我可以在Windows XP中成功获得所需的详细信息,但在禁用NIC时,在Windows 7中无法获得 有人知道如何完成这项任务吗 谢谢…以下是我提出的Win7 64位: var query = new SelectQuery("Win32_NetworkAdapter"); var scope = new ManagementScope("\\root
谢谢…以下是我提出的Win7 64位:
var query = new SelectQuery("Win32_NetworkAdapter");
var scope = new ManagementScope("\\root\\cimv2");
scope.Connect();
var searcher = new ManagementObjectSearcher(scope, query);
var managementObjects = searcher.Get();
foreach (var mo in managementObjects)
{
Debug.WriteLine("{0} : {1}", mo["Description"], mo["MACAddress"]);
}
我的蓝牙适配器如下所示:
蓝牙设备个人局域网:70:F3:95:88:F7:7E
但是,当其被禁用时,MAC地址显示为空白
您应该能够启用/禁用适配器以通过类上的方法查询MAC,但这有点繁琐,因为您必须手动包装Win32_NetworkAdapter类
您需要使用.Net Framework SDK工具“mgmtclassgen.exe”为WMI对象生成类包装器
像这样调用它生成的文件是80k:
mgmtclassgen Win32_NetworkAdapter -p NetworkAdapter.cs
然后对代码进行如下扩充:
var query=new SelectQueryWin32\u NetworkAdapter;
var scope=new ManagementScope\\root\\cimv2;
范围.连接;
var searcher=新的ManagementObjectSearcherscope,查询;
var managementObjects=searcher.Get;
var adapters=managementObjects.Cast.Selects=>newnetworkadapters;
适配器中的foreach var适配器
{
适配器。启用;
Console.WriteLine{0}:{1},adapter.Name,adapter.MACAddress;
}
但我无法让它工作,因为调用Enable时什么也没发生,返回代码为0。我发布它的目的是希望您或其他人能够推断出缺失的细节,从而使它能够正常工作。我认为您需要缓存MAC地址。例如,启用网卡后,您可以更新该网卡缓存中的MAC地址。稍后,当它被禁用并且无法从Windows获取MAC时,您可以从缓存中获取它 您无法从甚至未加载的驱动程序中获取MAC地址。驱动程序需要从网卡的ROM芯片加载MAC地址。因此,如果Windows确实有办法从禁用的网卡获取MAC地址,那么缓存MAC必须与Windows使用的技术相同