Aqui te envio la funcion propiamente tal...
   Dim BiosSet As Object
   Dim bios As Object
'   
' LEEMOS LA IDENTIFICACION DE LA PLACA MADRE
'
   Set BiosSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_BIOS")   
   On Local Error Resume Next
'
'  ARCHIVO QUE CONTENDRÁ LA INFORMACION QUE LEEREMOS
'
   open "DatosBios.txt" for output as  #1   
   For Each bios In BiosSet
      Print #1, "PrimaryBIOS  :  " & bios.PrimaryBIOS & vbLf &  "Status;   " & bios.Status & vbLf
      For cnt = LBound(bios.BIOSVersion) To UBound(bios.BIOSVersion)
         Print #1, " BiosVersion:  " & bios.BIOSVersion(cnt) & vbLf
      Next      
      Print #1, "Caption:  "; bios.Caption & vbLf
      Print #1, "Description:  "; bios.Description; vbLf
      Print #1, "Name:  "; bios.Name; vbLf
      Print #1, "Manufacturer:  "; bios.Manufacturer; vbLf
      Print #1, "ReleaseDate:  "; bios.ReleaseDate; vbLf
      Print #1, "SerialNumber:  "; bios.SerialNumber; vbLf
      Print #1, "SMBIOSBIOSVersion:  "; bios.SMBIOSBIOSVersion; vbLf
      Print #1, "SMBIOSMajorVersion:  "; bios.SMBIOSMajorVersion; vbLf
      Print #1, "SMBIOSMinorVersion:  "; bios.SMBIOSMinorVersion; vbLf
      Print #1, "SMBIOSPresent:  "; bios.SMBIOSPresent; vbLf
      Print #1, "SoftwareElementID:   "; bios.SoftwareElementID; vbLf
      Print #1, "Version;  "; bios.Version; vbLf
      Print #1, "InstallableLanguages; "; bios.InstallableLanguages; vbLf
      Print #1, "CurrentLanguage:  "; bios.CurrentLanguage; vbLf      
   Next  'For Each bios
    Dim cpuSet As Object
    Dim cpu As Object
'
'  LEEMOS LOS PROCESADORES QUE TIENE ESTE PC
'        
    Set cpuSet = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_Processor")
    For Each cpu In cpuSet
        Print #1, "Processor Id: " & cpu.ProcessorId
        Print #1, "Maximum Clock Speed: "; cpu.MaxClockSpeed
        Print #1, "Availability: " & cpu.Availability
        Print #1, "AddressWidth: " & cpu.AddressWidth
        Print #1, "CpuStatus: " & cpu.CpuStatus
        Print #1, "CurrentClockSpeed: " & cpu.CurrentClockSpeed
        Print #1, "MaxClockSpeed: " & cpu.MaxClockSpeed
        Print #1, "L2CacheSize: " & cpu.L2CacheSize
        Print #1, "L2CacheSpeed: " & cpu.L2CacheSpeed
        Print #1, "VoltageCaps: " & cpu.VoltageCaps
        Print #1, "Name: " & cpu.Name
    Next    
    close #1
'****************************************************
Despues al revisar el archivo DatosBios.txt me encuentro que dos o mas PC tiene la misma identificacion, es decir, un disco duro fue clonado y a cada uno le pusieron la imagen de otro PC. Talvez estos datos no son los reales en ningun PC, quizás a todos los pusieron la misma imagen de disco...  

Entonces surge la pregunta... En algun momento de la historia, al instalar el SO, se debio leer los datos del HW original.. ¿Como lo hizo?.  ¿Con que f(x)?..
Esto lo necesito para poder restringir el uso de programas en ciertos PC
de modo que cada vez que se ejecute el programa vaya leer el HW del equipo  y NO LA INFORMACION del hw que esta guardada en el disco (porque puede ser falsa o clonada)...  ¿Me explico?...
Espero que sirva de algo..