取得网卡序列号   很多软件以取得网卡地址作为License验证,这不失为一个验证合法用户的好办法,不过要付出回复用户电话、传真的代价哦 ^_^   将下面这段代码拷贝到程序中,然后在你的程序需要的时候调用EthernetAddress(0),该函数返回的字符串就是您机器上网卡的以太序列号。 Private Const NCBASTAT = &H33 Private Const NCBNAMSZ = 16 Private Const HEAP_ZERO_MEMORY = &H8 Private Const HEAP_GENERATE_EXCEPTIONS = &H4 Private Const NCBRESET = &H32 Private Type NCB  ncb_command As Byte  ncb_retcode As Byte  ncb_lsn As Byte  ncb_num As Byte  ncb_buffer As Long  ncb_length As Integer  ncb_callname As String * NCBNAMSZ  ncb_name As String * NCBNAMSZ  ncb_rto As Byte  ncb_sto As Byte  ncb_post As Long  ncb_lana_num As Byte  ncb_cmd_cplt As Byte  ncb_reserve(9) As Byte ' Reserved, must be 0  ncb_event As Long End Type Private Type ADAPTER_STATUS  adapter_address(5) As Byte  rev_major As Byte  reserved0 As Byte  adapter_type As Byte  rev_minor As Byte  duration As Integer  frmr_recv As Integer  frmr_xmit As Integer  iframe_recv_err As Integer  xmit_aborts As Integer  xmit_success As Long  recv_success As Long  iframe_xmit_err As Integer  recv_buff_unavail As Integer  t1_timeouts As Integer  ti_timeouts As Integer  Reserved1 As Long  free_ncbs As Integer  max_cfg_ncbs As Integer  max_ncbs As Integer  xmit_buf_unavail As Integer  max_dgram_size As Integer  pending_sess As Integer  max_cfg_sess As Integer  max_sess As Integer  max_sess_pkt_size As Integer  name_count As Integer End Type Private Type NAME_BUFFER  name As String * NCBNAMSZ  name_num As Integer  name_flags As Integer End Type Private Type ASTAT  adapt As ADAPTER_STATUS  NameBuff(30) As NAME_BUFFER End Type Private Declare Function Netbios Lib "netapi32.dll" _ (pncb As NCB) As Byte Private Declare Sub CopyMemory Lib "kernel32" Alias _ "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, _ ByVal cbCopy As Long) Private Declare Function GetProcessHeap Lib "kernel32" () _ As Long Private Declare Function HeapAlloc Lib "kernel32" _ (ByVal hHeap As Long, ByVal dwFlags As Long, _ ByVal dwBytes As Long) As Long Private Declare Function HeapFree Lib "kernel32" _ (ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) _ As Long Private Function EthernetAddress(LanaNumber As Long) _ As String  Dim udtNCB    As NCB  Dim bytResponse As Byte  Dim udtASTAT   As ASTAT  Dim udtTempASTAT As ASTAT  Dim lngASTAT   As Long  Dim strOut    As String  Dim x      As Integer  udtNCB.ncb_command = NCBRESET  bytResponse = Netbios(udtNCB)  udtNCB.ncb_command = NCBASTAT  udtNCB.ncb_lana_num = LanaNumber  udtNCB.ncb_callname = "* "  udtNCB.ncb_length = Len(udtASTAT)  lngASTAT = HeapAlloc(GetProcessHeap(), _ HEAP_GENERATE_EXCEPTIONS Or HEAP_ZERO_MEMORY, udtNCB.ncb_length)  strOut = ""  If lngASTAT Then   udtNCB.ncb_buffer = lngASTAT   bytResponse = Netbios(udtNCB)   CopyMemory udtASTAT, udtNCB.ncb_buffer, Len(udtASTAT)    With udtASTAT.adapt    For x = 0 To 5     strOut = strOut & Right$("00" & Hex$(.adapter_address(x)), 2)    Next x   End With   HeapFree GetProcessHeap(), 0, lngASTAT  End If  EthernetAddress = strOut End Function