2008-09-03 76 views

回答

0

增加提及System.Management.dll和使用这样的:

Dim mc As System.Management.ManagementClass 
Dim mo As ManagementObject 
mc = New ManagementClass("Win32_NetworkAdapterConfiguration") 
Dim moc As ManagementObjectCollection = mc.GetInstances() 
For Each mo In moc 
    If mo.Item("IPEnabled") = True Then 
     ListBox1.Items.Add("MAC address " & mo.Item("MacAddress").ToString()) 
    End If 
Next 
+3

净CF(Compact Framework的)不具有`System.Management`命名空间。 – Trisped 2013-03-12 00:55:48

5

的OpenNETCF代码的1.4得到从以下P中的信息/调用呼叫:

[DllImport ("iphlpapi.dll", SetLastError=true)] 
    public static extern int GetAdaptersInfo(byte[] ip, ref int size); 

物理地址(返回为MAC地址),我认为是围绕约索引400 - 后字节数组408电话。所以你可以直接使用它,如果你不想使用OpenNETCF(为什么?OpenNETCF不止石头!)

Wonderful P/Invoke.net给出了一个完整的例子here

哦,正确回答你的问题:

只能使用Compact Framework的

你不能。这是CF的生活,如果你想要一些乐趣尝试发送数据与套接字同步超时。 :D

0

如果您可以访问注册表,请尝试在LOCAL_MACHINE\Comm\PCI\***\Parms\MacAddress下查找您的适配器MAC地址。

这可能是一个快速和肮脏的解决方案,不涉及使用WMI或OpenNETCF的...

+1

这将是一个完整的运气情况,如果它在那里。我刚刚检查了4个设备,其中一个实际上有一条PCI总线,并且没有一个在注册表中有MacAddress。查询NDIS的价值是获得这个的唯一可靠方法。 – ctacke 2009-01-08 14:22:04