各位好:
    现在网上流行的取得网卡MAC地址的方法基本上都是使用Netbios.dll,具体代码可参考:http://blog.csdn.net/qq1854520/archive/2006/10/31/1359331.aspx。我也试过整个方法了,但发现在使用FAT32文件系统的计算机中运行都没什么问题(Windows 2000 Pro/XP/2003 Server都试过了),只要使用NTFS的系统(Windows 2000 Serve/2003 Server测试过)取得的MAC都是“00 00 00 00”。跟踪程序中各变量的情况,发现主要问题出在这里:
CopyMemory myASTAT, myNcb.ncb_buffer, Len(myASTAT)
myNcb.ncb_buffer中其实都有值了,Len(myASTAT)也可以取得myASTAT的长度,但是CopyMemory时myASTAT中确没有复制的值。
    这个问题研究好长时间了,一直没有找到原因。不知道哪位可以帮忙看看是什么原因。这里先谢过了!

解决方案 »

  1.   

    多谢happy_sea的提示,已经找到方法了,下面是我用的代码,各位参考一下。Option ExplicitPrivate Sub wmiSoundDeviceInfo()Dim wmiObjSet As SWbemObjectSet
    Dim obj As SWbemObjectSet wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
    InstancesOf("Win32_NetworkAdapterConfiguration")
    On Local Error Resume NextFor Each obj In wmiObjSet
    Text1.Text = obj.MACAddress
    NextEnd Sub
    Private Sub Command1_Click()Call wmiSoundDeviceInfoEnd Sub
      

  2.   

    刚才漏掉了,我参考了这篇文章的内容:
    http://www.qqgb.com/Program/VB/VBsystemctrl/Program_106500.html
      

  3.   

    MAC是可以取得了,不过最初的疑问还是没有解决呀。
    API的方法为什么在NTFS格式的系统中无法取得MAC呢?