Serial del disco duro

14/08/2007 - 00:40 por Henry Sanchez | Informe spam
Hola grupo,

Desde hace mas de 2 años utilizo el siguiente codigo para encontrar el
serial del disco duro de un computador:

Public Function SerialDisco() As String
' Esta es la funcion que devuelve el serial del disco duro unico, asignado
por el fabricante
' Funciona en Windows 2000, NT y XP (Produce error en Me)
Dim OWMI As Object
Dim Disco As Object
Dim Discos As Object
On Error GoTo ErrorSerial

Set OWMI = GetObject("WINMGMTS:")
Set Discos = OWMI.instancesof("Win32_physicalMedia")
For Each Disco In Discos
SerialDisco = Disco.serialnumber
Exit For
Next Disco

Exit Function

ErrorSerial:
SerialDisco = "Error"
End Function

Este codigo lo tengo gracias a la ayuda de Hector Miguel, y aunque nunca lo
entendi muy bien, ultimamente me esta fallando pues devuelve "Error", supongo
que tiene que ver con el uso de Windows Vista o de Office 2007 (o tal vez
ambos), pues hace 2 años no molestaba

Alguien puede decirme que es lo que pasa con la linea

SerialDisco = Disco.serialnumber
que esta devolviendo error en un porcentaje muy alto de los equipos en los
que corro el codigo?
o mejor alguien puede pasarme una funcion que calcule el serial del disco
duro en donde se encuentra el archivo que contiene el codigo?

Saludos,

Henry
 

Leer las respuestas

#1 Héctor Miguel
14/08/2007 - 08:38 | Informe spam
hola, Henry !

Desde hace mas de 2 a#os utilizo el siguiente codigo para encontrar el serial del disco duro de un computador:
... aunque nunca lo entendi muy bien, ultimamente me esta fallando pues devuelve "Error"
supongo que tiene que ver con el uso de Windows Vista o de Office 2007 (o tal vez ambos), pues hace 2 a#os no molestaba
Alguien puede decirme que es lo que pasa con la linea
SerialDisco = Disco.serialnumber
que esta devolviendo error en un porcentaje muy alto de los equipos en los que corro el codigo?
o mejor alguien puede pasarme una funcion que calcule el serial del disco duro en donde se encuentra el archivo que contiene el codigo?



1) segun el siguiente articulo, la propuesta del codigo original no deberia de fallar -???-
http://msdn2.microsoft.com/en-us/li...94346.aspx

2) *hablando* de windows vista, y que en el bucle del codigo *sales* inmediatamente despues de *leer* el primer disco *encontrado*
existe la posibilidad de un fallo en el *secuenciador* [o enumerador/identificador/...] de los medios fisicos en el vista -?-
-> http://support.microsoft.com/kb/937251/en

3) tambien existe la posibilidad de que se deba a politicas de seguridad de windows vista -?-
-> http://www.microsoft.com/industry/g...urity.mspx

4) otras fuentes de informacion...
-> http://msdn2.microsoft.com/en-us/li...64920.aspx

5) con relacion a *identificar* el disco desde el cual se corre tu archivo/aplicacion...
si la intencion es continuar *leyendo* el codigo [unico e inamovible] que pone el fabricante del disco...
no encontre en las propiedades del objeto *physicalMedia* [primer enlace]
-> alguna que permita identificar [p.e.] la unidad *logica* del medio fisico [p.e. "C:\"] :-((

6) [creo que] va a ser necesario/conveniente/... que hagas la consulta en los grupos de windows-vista -?-
y si te la aclaran... [plis] no dejes de regresar con la/s propuesta/s de solucion :D

si cualquier duda... comentas ?
saludos,
hector.

__ el codigo expuesto __
Public Function SerialDisco() As String
' Esta es la funcion que devuelve el serial del disco duro unico, asignado por el fabricante
' Funciona en Windows 2000, NT y XP (Produce error en Me)
Dim OWMI As Object
Dim Disco As Object
Dim Discos As Object
On Error GoTo ErrorSerial
Set OWMI = GetObject("WINMGMTS:")
Set Discos = OWMI.instancesof("Win32_physicalMedia")
For Each Disco In Discos
SerialDisco = Disco.serialnumber
Exit For
Next Disco
Exit Function
ErrorSerial:
SerialDisco = "Error"
End Function

Preguntas similares