Bueno yo también he tratado de buscar un método, y quisiera saber si es fácil de evadir. Encontre esta función que utiliza el objeto WinMgmts.
La aplicacion que tengo lee datos del disco duro y si coinciden con los que tiene en una variable dentro del programa, se inicia. Estoy pensando en hacer que compruebe el disco duro, no sólo al inicio del programa.
Me pregunto si se puede evadir este método de comprobar el disco duro más de una vez durante la ejecución del programa.
Function ObtenerSerieDiscoRigido() As String
Dim SerialDisco, modelo As String
Dim Disco As Object
On Error Resume Next
ObtenerSerieDiscoRigido = ""
SerialDisco = ""
modelo = ""
With GetObject("WinMgmts:")
If SerialDisco = "" Then
For Each Disco In .InstancesOf("Win32_DiskDrive")
SerialDisco = Replace(Trim(Disco.Model), "-", "")
modelo = Disco.signature
If SerialDisco <> "" Then
Exit For
End If
Next
End If
If SerialDisco = "" Then
For Each Disco In .InstancesOf("Win32_PhysicalMedia")
SerialDisco = Trim(Disco.SerialNumber)
modelo = Disco.Model
If SerialDisco <> "" Then
Exit For
End If
Next
End If
End With
On Error GoTo 0
ObtenerSerieDiscoRigido = (SerialDisco & "-" & modelo)
End Function