随便哪个唯一的信息都可以.....

解决方案 »

  1.   

    可以的
    DeviceIOControl可以实现的
    绝对OK的
    我实现过的了,但技术细节保密
      

  2.   

    很有意思!可以用来制作加密信息!
    观注!
    To ly_liuyang(Liu Yang)能否提出思路,或指点一下
      

  3.   

    办法很多!U盘插上后应该可以直接用API读取出一些信息来
      

  4.   

    to ly_liuyang(Liu Yang) :
      
      技术不交流,又怎能进步呢?
     摆正点心态吧!
      

  5.   

    http://community.csdn.net/Expert/topic/3103/3103152.xml?temp=.4732019
    可以参考
      

  6.   

    硬件信息,得到PID、VID,盘符,符号连接,等等是可以的。
      

  7.   

    http://www.kernelstudio.com/getitem.asp?id=4这边有用C介绍...用delphi不会..谁帮弄一下...
      

  8.   

    Attribute VB_Name = "BulkXfer"Option Explicit' = = = = W I N A P I = = = =Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Public 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, ByVal lpOverlapped As Long) As Long
    Public Declare Function GetLastError Lib "kernel32" () As Long' = = = = C O N S T A N T S = = = =Public Const GENERIC_READ = &H80000000
    Public Const GENERIC_WRITE = &H40000000
    Public Const FILE_SHARE_READ = &H1
    Public Const FILE_SHARE_WRITE = &H2
    Public Const OPEN_EXISTING = 3Public Const METHOD_BUFFERED = 0
    Public Const METHOD_IN_DIRECT = 1
    Public Const METHOD_OUT_DIRECT = 2Public Const MAX_PIPES = 16
    Public Const MAX_USB_DEV_NUMBER = 32Enum ErrorEnum
    eBadParam = -1
    eBadDriver = -2
    eBadPipe = -3
    End EnumEnum EZ_ReadOrWrite
    eWrite = 1
    eRead = 0
    End EnumPublic Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Boolean
    End TypePrivate Const Ezusb_IOCTL_INDEX = &H800Public Const IOCTL_Ezusb_GET_PIPE_INFO = _
    &H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 0) * 4Private Const IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR = _
    &H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 1) * 4Public Const IOCTL_EZUSB_BULK_READ = _
    &H220000 + METHOD_OUT_DIRECT + (Ezusb_IOCTL_INDEX + 19) * 4Public Const IOCTL_EZUSB_BULK_WRITE = _
    &H220000 + METHOD_IN_DIRECT + (Ezusb_IOCTL_INDEX + 20) * 4////////////////////////////////////
    ////////////////////////////////////
    Public Type USBDeviceDescriptorType 
    bDescriptorLength As Byte
    bDescriptor As Byte
    iSpecRelease As Integer
    bDeviceClass As Byte
    bDeviceSubClass As Byte
    bDeviceProtocol As Byte
    bMaxPacketSize As Byte
    iVendorID As Integer
    iProductID As Integer
    iDeviceRelease As Integer
    bManufacturer As Byte
    bProduct As Byte
    bSerialNumber As Byte
    bNumberConfigurations As Byte
    fill(128) As Byte
    End TypePublic Type BulkTransferControlType
    lPipeNum As Long
    End Type
    ////////////////////////////////////
    ////////////////////////////////////
    Public Enum USBDPipeEnum
    eUsbdPipeTypeControl = 0
    eUsbdPipeTypeIsochronous
    eUsbdPipeTypeBulk
    eUsbdPipeTypeInterrupt
    End Enum
    ////////////////////////////////////
    ////////////////////////////////////
    Public Type USBDPipeInformationTypeiMaximumPacketSize As Integer 
    bEndpointAddress As Byte bInterval As Byte PipeType As USBDPipeEnum 
    lPipeHandle As LonglMaximumTransferSize As Long lPipeFlags As Long
    End Type////////////////////////////////////
    ////////////////////////////////////
    Public Type USBDInterfaceInformationType
    iLength As Integer bInterfaceNumber As Byte
    bAlternateSetting As BytebClass As Byte
    bSubClass As Byte
    bProtocol As Byte
    bReserved As BytelInterfaceHandle As Long
    lNumberOfPipes As LongPipes(MAX_PIPES) As USBDPipeInformationType
    End Type////////////////////////////////////
      

  9.   

    ////////////////////////////////////
    Function DoBulkXfer(strDriver As String, pipe As Integer, ByRef buffer() As Byte, ByRef dataLen As Long) As LongDim hDriverHandle As Long
    Dim result As Long
    Dim btc As BulkTransferControlType
    Dim pi As USBDInterfaceInformationType
    Dim usbDD As USBDeviceDescriptorType
    Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver)
    '
    If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR, usbDD, Len(usbDD), usbDD, Len(usbDD), lBytesReturned, 0)If result = 0 Then: DoBulkXfer = resultIf usbDD.iVendorID <> &H547 And usbDD.iProductID <> &H1002 Then
    DoBulkXfer = eBadPipe
    Exit Function
    End Ifresult = GetPipeInfo(strDriver, pi)If result = 0 Then
    DoBulkXfer = result
    Exit Function
    End IfIf pi.lNumberOfPipes <= pipe Then
    DoBulkXfer = eBadPipe
    Exit Function
    Else 
    btc.lPipeNum = pipe
    End IfIf (pi.Pipes(pipe).bEndpointAddress > 128) Then
    result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_READ, btc, Len(btc), buffer(0), dataLen, dataLen, 0)
    Else
    result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_WRITE, btc, Len(btc), buffer(0), dataLen, dataLen, 0)
    End IfCloseHandle (hDriverHandle)DoBulkXfer = resultElseDoBulkXfer = eBadDriverEnd IfEnd Function////////////////////////////////////
    ////////////////////////////////////
    Function GetPipeInfo(strDriver As String, pi As USBDInterfaceInformationType) As LongDim result As Long
    Dim hDriverHandle As Long
    Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver)GetPipeInfo = 0If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_PIPE_INFO, pi, Len(pi), pi, Len(pi), lBytesReturned, 0)
    CloseHandle (hDriverHandle)
    End IfGetPipeInfo = resultEnd Function////////////////////////////////////
    ////////////////////////////////////
    Function OpenDriver(sDriverName As String) As LongDim result As Long
    Dim driverName As StringdriverName = "\\.\" & sDriverNameresult = CreateFile(driverName, (GENERIC_READ Or GENERIC_WRITE), (FILE_SHARE_READ Or FILE_SHARE_WRITE), ByVal 0, OPEN_EXISTING, 0&, 0)If result < 0 Then
    result = GetLastError()
    End If
    OpenDriver = resultEnd Function////////////////////////////////////
    ////////////////////////////////////
    Sub ErrMsg(err As ErrorEnum)Select Case errCase eBadDriver
    MsgBox "Selected EZ-USB Device Driver was not found. Perhaps no device is connected.", vbOKOnly + vbCritical, "BulkXFer Error"
    Case eBadPipe
    MsgBox "Correct Pipe not found. Perhaps ""Ep-pair.hex"" was not downloaded to a development board.", vbOKOnly + vbCritical, "BulkXFer Error"
    Case Else
    MsgBox "Unknown Error.", vbOKOnly + vbCritical, "BulkXFer Error"
    End SelectEnd Sub///////////////////////////////////
      

  10.   

    '下面这些是在FRM里面摘出来的文件
    ///////////////////////////////////Attribute VB_Name = "frmBulk"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = True
    Attribute VB_Exposed = FalseOption ExplicitPublic strBuffer As String////////////////////////////////////
    ////////////////////////////////////
    Private Sub Form_Load()
    Dim Index As Integer
    Dim sDriverName As String
    Dim hDriver As LongFor Index = 0 To MAX_USB_DEV_NUMBER - 1
    sDriverName = "Ezusb-" & Index
    hDriver = OpenDriver(sDriverName)
    If hDriver > 0 Then
    cmbDriverName.AddItem sDriverName
    CloseHandle hDriver
    End If
    NextIf cmbDriverName.ListCount > 0 Then
    cmbDriverName.Text = cmbDriverName.List(0)
    Else
    ErrMsg (eBadDriver)
    End
    End If
    End Sub////////////////////////////////////
    ////////////////////////////////////
    Private Sub txtIn_Change()Dim buffer(63) As Byte
    Dim result As Long
    Dim i As Integer
    Dim lDataLen As Long
    Dim sDriverName As StringstrBuffer = strBuffer + Right(txtIn, 1)If Len(strBuffer) = Val(txtBlkSize.Text) ThenlDataLen = Len(strBuffer)
    For i = 1 To lDataLen
    buffer(i - 1) = Asc(Mid(strBuffer, i, 1))
    Next
    strBuffer = ""sDriverName = cmbDriverName.Textresult = DoBulkXfer(sDriverName, eWrite, buffer, lDataLen)
    If result <> 1 Then: ErrMsg (result): Exit SubFor i = 0 To 63 ' no rabbits up my sleeve
    buffer(i) = 0
    Nextresult = DoBulkXfer(sDriverName, eRead, buffer, lDataLen)
    If result <> 1 Then: ErrMsg (result): Exit SubFor i = 1 To lDataLen
    txtOut.Text = txtOut.Text + Chr(buffer(i - 1))
    NextEnd If ' xfer trigger reachedEnd Sub////////////////////////////////////
    ////////////////////////////////////
    Private Sub txtBlkSize_Change()
    Dim temp As Integertemp = Val(txtBlkSize)If temp < 0 Or temp > 64 Then
    MsgBox "Enter a valid Bulk Transfer block size between 1 and 64.", vbInformation, "Input Error"
    txtBlkSize.SelStart = 0
    txtBlkSize.SelLength = 3
    End If
    End SubPrivate Sub cmdClearIn_Click()
    txtIn.Text = ""
    End SubPrivate Sub cmdClearOut_Click()
    txtOut.Text = ""
    End SubPrivate Sub Form_Activate()
    txtBlkSize.SetFocus
    End Sub 
      

  11.   

    ly_liuyang(Liu Yang) ( ) 信誉:140 呵呵,还保密????大家分享阿
      

  12.   

    嘿嘿
    真是不好意思了:)最多就给你一点Tips
    可读注册表的,哈哈,效果是完全一样的!例如:HardwareID就是了[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11\221D19FD3D8E6261&0]
    "DeviceDesc"="Disk drive"
    "Capabilities"=dword:00000010
    "UINumber"=dword:00000000
    "HardwareID"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,  00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00,  6c,00,79,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,  00,5f,00,31,00,2e,00,31,00,31,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,  52,00,5c,00,44,00,69,00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f,  00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00,  5f,00,5f,00,5f,00,5f,00,5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,  00,5c,00,44,00,69,00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f,00,  5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,4e,00,65,00,74,  00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00,73,00,  6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,31,00,00,00,4e,00,65,  00,74,00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00,  73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,31,00,00,00,55,  00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,47,00,65,00,6e,00,44,00,69,00,  73,00,6b,00,00,00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00,00,00,00
    "CompatibleIDs"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,  69,00,73,00,6b,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,52,  00,41,00,57,00,00,00,00,00
    "Service"="disk"
    "ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
    "ConfigFlags"=dword:00000000
    "ParentIdPrefix"="7&66a18cb&1"
    "Driver"="{4D36E967-E325-11CE-BFC1-08002BE10318}\\0003"
    "Class"="DiskDrive"
    "Mfg"="(Standard disk drives)"
    "FriendlyName"="Netac OnlyDisk USB Device"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_____&Prod______&Rev_4.00\1F3312000265&0]
    "DeviceDesc"="Disk drive"
    "Capabilities"=dword:00000010
    "UINumber"=dword:00000000
    "HardwareID"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,  00,73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,  5f,00,5f,00,5f,00,5f,00,5f,00,34,00,2e,00,30,00,30,00,00,00,55,00,53,00,42,  00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00,  5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,00,  00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,00,73,00,6b,00,  5f,00,5f,00,5f,00,5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,  00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,  5f,00,5f,00,5f,00,34,00,00,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,  00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,34,00,00,00,55,00,53,00,42,00,  53,00,54,00,4f,00,52,00,5c,00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00,  00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00,00,00,00
    "CompatibleIDs"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,  69,00,73,00,6b,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,52,  00,41,00,57,00,00,00,00,00
    "Service"="disk"
    "ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
    "ConfigFlags"=dword:00000000
    "ParentIdPrefix"="7&37a5937&1"
    "Driver"="{4D36E967-E325-11CE-BFC1-08002BE10318}\\0000"
    "Class"="DiskDrive"
    "Mfg"="(Standard disk drives)"
    "FriendlyName"="神州数码 移动数码盘 USB Device"
    各位就知道问人,又讲技术交流才能进步,好个激将发呀
    再次郑重声明,本人LY,从没在CSDN上提过一个问题,故为CSDN第一铁公鸡上述代码支持2000或以上系统有效
    具体代码为商业代码,不可能无偿公开的,你见那个ERP有源码的?
      

  13.   

    剩下的问题,我迟点会在给你Tips的了
    但具体实现都是要靠你自己了:)
      

  14.   

    在这里呀[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11\221D19FD3D8E6261&0]221D19FD3D8E6261就是硬件ID了[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_____&Prod______&Rev_4.00\1F3312000265&0]1F3312000265就是硬件ID了明白了吗?如果有人修改的注册表就读不出信息了,不过下次插入设备又可以读出了
    哈哈:)
      

  15.   

    可以结贴了
    并请提交到FAQ吧:)
      

  16.   

    请问ly_liuyang(Liu Yang) 老大,怎么提交到FAQ呀?我怎么没有那个权利(功能)呢?
      

  17.   

    》 Lwg0901(伤心人)好像只有发帖人和版筑才有这个权限的
    我没在CSDN发过贴,真是不清楚了
      

  18.   

    好像只有发帖人和版筑才有这个权限的
    我没在CSDN发过贴,真是不清楚了/////////////////////////////////////////
      老大.原来你吃肉不吐骨头啊.说明你从来没放过分啊..牛人..
        你的可用分一定爆满了是不是啊..
      

  19.   

    应该需要引进ACTIVX控件吧
    然后调用API?