****************Numero de serie del Volumen (Dado al formatear)******************* Utilizando el FSO ================= Dim FileWsh As Object Set FileWsh = CreateObject("Scripting.FileSystemObject") MsgBox "Número de Serie del Volumen en Hexadecimal: " & Hex$( _ FileWsh.Drives("C").SerialNumber) MsgBox "Número de Serie del Volumen en decimal: " & FileWsh.Drives( _ "C").SerialNumber Set FileWsh = Nothing Este está claro que me da el numero de serie del dicsco duro, dado por el SO al formatear Utilizando API ============== Private Declare Function GetVolumeSerialNumber Lib "kernel32" Alias _ "GetVolumeInformationA" (ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _ lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _ ByVal nFileSystemNameSize As Long) As Long Sub VolumeSerialNumber() Dim VolLabel As String Dim VolSize As Long Dim Serial As Long Dim MaxLen As Long Dim Flags As Long Dim Name As String Dim NameSize As Long Dim S As String Dim Ret As Boolean Ret = GetVolumeSerialNumber("C:\", VolLabel, VolSize, Serial, MaxLen, _ Flags, Name, NameSize) If Ret Then S = Format(Hex(Serial), "00000000") MsgBox "Serie del Volumen: " & Left(S, 4) + "-" + Right(S, 4) Else MsgBox "0000-0000" End If End Sub Este tambien está claro que me da el numero de serie del dicsco duro, dado por el SO al formatear. ************************************************************************************************** ******************** Utilizando WMI: ==================== Codigo implementado por Buho con estas explicaciones: 'Con WMI tienes varias clases que se refieren a los discos: Win32_DiskDrive 'que representa al disco fisico, Win32_LogicalDisk que representa al disco 'logico y Win32_PhysicalMedia que representa un medio fisico de 'almacenamiento. Con la propiedad VolumeSerialNumber de Win32_LogicalDisk 'obtienes el # de serie dado al formatear el disco logico. La propiedad 'Signature de Win32_DiskDrive segun la documentacion es un identificador del 'disco que esta disponible en desde el XP en adelante y no da indicacion de 'que sea el numero de serie. Lo que si te devuelve el numero de serie fisico 'del disco es la propiedad SerialNumber de Win32_PhysicalMedia (que segun la 'documentacion es "Manufacturer-allocated number used to identify the 'physical media."). 'Este comentario es gentileza de Eduardo Morcillo, MVP Visual Basic '************************ 'Resumiendo el tema de los numeros de serie 'obtenidos con WMI: 'Buho Mayo 2004 Sub Fisico() 'Disco Fisico ' Dim ObjetoWMI As Object Dim Disco As Object Dim Discos As Object Set ObjetoWMI = GetObject("WINMGMTS:") Set Discos = ObjetoWMI.InstancesOf("Win32_DiskDrive") For Each Disco In Discos MsgBox "Serie decimal: " & Disco.signature MsgBox "Serie Hexadecimal: " & Hex$(Disco.signature) Next End Sub Sub Logico() 'Disco Logico 'Numero dado al formatear Dim ObjetoWMI As Object Dim Disco As Object Dim Discos As Object Set ObjetoWMI = GetObject("WINMGMTS:") Set Discos = ObjetoWMI.InstancesOf("Win32_LogicalDisk") For Each Disco In Discos MsgBox "Unidad disco: " & Disco.Name & " serie logica: " & Disco.VolumeSerialNumber Next End Sub Sub Fabrica() 'devuelve el numero de serie fisico 'del disco(que segun la 'documentacion es "Manufacturer-allocated number used to identify the 'physical media."). Dim ObjetoWMI As Object Dim Disco As Object Dim Discos As Object Set ObjetoWMI = GetObject("WINMGMTS:") Set Discos = ObjetoWMI.InstancesOf("Win32_PhysicalMedia") For Each Disco In Discos MsgBox "Serie Fabrica: " & Disco.SerialNumber Next End Sub Insisto....esto ultimo hay que agradecerselo a Eduardo Morcillo.