SOS Leer Serie Procesador

Iniciado por siliconplus, 25 Abril 2012, 18:41 PM

0 Miembros y 1 Visitante están viendo este tema.

siliconplus

Amigos... Llevo tiempo programando y no he podido encontrar la dll para leer la serie  EXACTA del procesador...     

Existen sequencias en VB tales como

Set swService = GetObject("winmgmts:")
   Set swCpuSet = swService.ExecQuery("Select * from Win32_Processor")
   Set swMemSet = swService.ExecQuery("Select * from Win32_PhysicalMemory")

que dan la serie del procesador o de la placa madre que ha sido grabada en el registro de Windows al momento de instalarse.   El problema surge cuando se clona el disco del PC a otro PC, por ende, se clona el registro.  Por lo tanto el segundo PC no arroja la verdadera serie del procesador ni menos la serie de la placa madre.   

Otro ejemplo similar es cuando llegan 20 PC nuevos, y todos vienen clonados y son similares pero ID.de procesador diferentes , y al ejecutar los comando  de VB WIN32_Processor.. todos me devuelven el mismo ID de procesador...
:-\

¿Como podría leer la serie del procesador actual? ( y no el clon).
Sé que se podia usando assembler (pero soy ignorante de ese lenguaje) y el tiempo apremia... :-(

De antemos gracias a todos...




Miseryk

Hola, me interesa ese tema, me podrías decir a qué te refieres exactamente?; y si es posible un ejemplo con resultado, a ver si puedo ayudar en algo. (Y)
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

siliconplus

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

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

Elemental Code

        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


Nada de eso es "Unico"
Busca el numero de serie del disco duro, o la direccion MAC de la tarjeta de red.
Esos son mas "unicos"

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

siliconplus

la serie del disco duro se repite si es una imagen clonada  (idem de ejercicio anterior)
:xD

Por lo general la serie del disco no se utiliza porque si se quema o se cambia el disco por uno de mayor capacidad, el programa no se podra ejecutar en ese PC
:-[

  Print #1, "Processor Id: " & cpu.ProcessorId
  y
  Print #1, "Name: " & cpu.Name

son UNICOS...  un tipo de CPU tiene su ID unica dentro de su nombre  (los dos campos van de la mano), pero si es una imagen clonada (el disco)... no me dá el procesador actual...
:-(

siliconplus

No me queda mas que leer la MAC...  (por el momento).

La idea es tener dos variables fijas del PC por si falla una, es decir.  Si se quemó la tarjeta madre, el procesador se mantiene.. aunque a estas alturas, cambiar la placa es sinonimo de cambiar todo... cpu, socket.,etc, etc...   Lo mismo que si se quema el procesador...  mmm nueva placa madre...
:D

¿Algun link para leer la MAC?...
:silbar:

Elemental Code


I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

siliconplus

Gracias.. !!!
;-)

Antes yo igual usaba batch...  y como se detallan en los post siguientes tambien tenia ciertos problemitas..   pero servía igual.   En todo caso era el inicio hacia el hackeo y crackeo leyendo resultados de otros comando y enlazandolos.. etc, etc.

Queda pendiente.. si seria posible leer la serie del procesador
jejeje

Gracias...

DarkMatrix

Yo intente eso de leer el ID del procesador, creo que con WMI es la peor forma, algunas veces me devolvia nulo y otras tambien me devolvia Seriales repetidos en pcs diferentes, tambien probe el serial del disco, funciona pero algunos devuelven ID nulo no se porq :S, hasta ahora no he encontrado otra forma de obtener un identificador unico para cada pc :S

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix