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..