rt

解决方案 »

  1.   

    http://search.csdn.net/Expert/topic/2593/2593388.xml?temp=.5579187
    http://search.csdn.net/Expert/topic/263/263492.xml?temp=.2834741
    http://search.csdn.net/Expert/topic/701/701498.xml?temp=.1207544
      

  2.   

    [转贴其中的一个回复]'在WIN98下,把在SYSTEM目录下smartvsd.vxd这个文件拷贝到SYSTEM\IOSUBSYS
    '然后重新启动,然后再运行以下程序
    ’-----------------------以下代码经过测试-----------------------
    ' ---------------——-----到时间可别忘了给分!!!!------------
    '注意:以下代码得到的是硬盘厂商固定的序列号,而不是硬盘的逻辑序列号
    ’以下代码支持Windows 95 OSR2, Windows 98, Windwos 98 SE, Windows ME
    '第一个硬盘必须为IDE接口
    ’------------------------源代码开始--------------------------------
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Type IDERegs
          bFeaturesReg     As Byte
          bSectorCountReg  As Byte
          bSectorNumberReg As Byte
          bCylLowReg       As Byte
          bCylHighReg      As Byte
          bDriveHeadReg    As Byte
          bCommandReg      As Byte
          bReserved        As Byte
    End TypeType InParams
          cBufferSize  As Long
          irDriveRegs  As IDERegs
          bDriveNumber As Byte
          bReserved(0 To 19)   As Byte
    End Type
    Dim inbuff As InParams
    Dim outbuff(0 To 528) As ByteDim SerialNumber As String
    Function ChangeByteOrder(s As Variant, nLen As Long)
    Dim i As Long
    Dim pi As Long
    pi = 0
    For i = 0 To nLen / 2 - 1
        c = s(pi)
        s(pi) = s(pi + 1)
        s(pi + 1) = c
        pi = pi + 2
    NextEnd FunctionDim SerialNumber As StringSub Main()
    Dim nBytes As Long
    Dim nRet As Long
    Dim hVxD As LongDim BSerialNumber(0 To 19) As Byteinbuff.cBufferSize = 512
    inbuff.bDriveNumber = 0
    inbuff.irDriveRegs.bSectorCountReg = 1
    inbuff.irDriveRegs.bSectorNumberReg = 1
    inbuff.irDriveRegs.bCylHighReg = 0
    inbuff.irDriveRegs.bCylLowReg = 0
    inbuff.irDriveRegs.bDriveHeadReg = &HA0
    inbuff.irDriveRegs.bCommandReg = &HEC
    hVxD = CreateFile("\\.\smartvsd", 0, 0, 0, 1, 0, 0)
    nRet = DeviceIoControl(hVxD, &H7C088, inbuff, Len(inbuff) - 1, outbuff(0), 528, nBytes, 0)
    If nRet > 0 Then
        CopyMemory BSerialNumber(0), outbuff(36), 20
        SerialNumber = StrConv(BSerialNumber, vbUnicode)
        SerialNumber = Trim(SerialNumber)
    End If
    Call CloseHandle(hVxD)MsgBox SerialNumber
    End Sub'----------代码结束---------------------------------
      

  3.   

    to  viena(维也纳nn-实心木头人) 
    如果是其他系统呢?
    如果不行的话可不可以获得cpu的id号也可以的
    你的代码如何指定电脑名称呢?
    我运行时nRet =0
      

  4.   

    SCSI硬盘没有序列号
    还不如获得网卡的MAC编码比较好办
      

  5.   

    to kmzs(.:RNPA:.山水岿濛) 
    如何获得网卡的MAC编码(网络中的任意一台电脑)