Gå til innhold

Anbefalte innlegg

Heisan. Jeg prøver å lese ut serienummer på harddisken og fant på nettet følgende kode:

       Dim Search As New Management.ManagementObjectSearcher("SELECT * FROM Win32_BIOS")
       Dim Search2 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")
       Dim Search3 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor")
       Dim Search4 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk")
       Dim info As Management.ManagementObject
       For Each info In Search.Get
           Debug.WriteLine("Serial Number: " & info("serialnumber").ToString)
           Debug.WriteLine("Manufacturer: " & info("Manufacturer").ToString)
       Next
       For Each info In Search2.Get
           Debug.WriteLine("Model: " & info("Model").ToString)
           Debug.WriteLine("Computer Name: " & info("Name").ToString)
           Debug.WriteLine("User Name Loged In: " & info("UserName").ToString)
           Debug.WriteLine("Total Physical Memory: " & info("TotalPhysicalMemory").ToString & " KB of RAM")
       Next
       For Each info In Search3.Get
           Debug.WriteLine("CPU Clock Speed: " & info("Name").ToString)
       Next
       For Each info In Search4.Get
           Debug.WriteLine("Name: " & info("Name").ToString)
           Debug.WriteLine("Serial: " & info("ColumeSerialNumber").ToString)
       Next

Alt fungerer helt greit helt frem til for each løkka som skal vise meg disk info. Da bare henger programmet. Noen som vet hvorfor?

 

Ole

Lenke til kommentar
Videoannonse
Annonse

Det er fordi noen av diskene ikke inneholder noe serienummer, som oftest fordi de er eksterne diskstasjoner dedikert til disketter, CD-er eller Zip-disketter og er for øyeblikke tomme. Koden inneholder dessuten en bugg - det skal stå VolumeSerialNumber i siste linje, ikke ColumeSerialNumber:

Sub Main()

 

    Dim Search As New Management.ManagementObjectSearcher("SELECT * FROM Win32_BIOS")

    Dim Search2 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")

    Dim Search3 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor")

    Dim Search4 As New Management.ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk")

    Dim info As Management.ManagementObject, oSerial As Object

    For Each info In Search.Get

        Debug.WriteLine("Serial Number: " & info("serialnumber").ToString)

        Debug.WriteLine("Manufacturer: " & info("Manufacturer").ToString)

    Next

    For Each info In Search2.Get

        Debug.WriteLine("Model: " & info("Model").ToString)

        Debug.WriteLine("Computer Name: " & info("Name").ToString)

        Debug.WriteLine("User Name Loged In: " & info("UserName").ToString)

        Debug.WriteLine("Total Physical Memory: " & info("TotalPhysicalMemory").ToString & " KB of RAM")

    Next

    For Each info In Search3.Get

        Debug.WriteLine("CPU Clock Speed: " & info("Name").ToString)

    Next

    For Each info In Search4.Get

        Debug.WriteLine("Name: " & info("Name").ToString)

        If IsNotNothing(info("VolumeSerialNumber"), oSerial) Then

            Debug.WriteLine("Serial: " & oSerial.ToString)

        End If

    Next

 

End Sub

 

Public Function IsNotNothing(ByVal ReferenceObject As Object, ByRef ReturnVariable As Object) As Boolean

 

    ' Return what we're expecting

    If ReferenceObject IsNot Nothing Then

        ReturnVariable = ReferenceObject

        Return True

    End If

 

End Function

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...