Interface hardeschijf

Status
Niet open voor verdere reacties.

joke1

Gebruiker
Lid geworden
24 mei 2006
Berichten
159
Ik wil met VB2013 van de harde schijven in een pc bepalen wat hun interface is. Is het IDE, SATA of USB?
Ik probeerde al via ManagementObjectSearcher("select * from Win32_DiskDrive") maar daar staat de interface niet tussen. Of heb ik slecht gekeken?
Graag wat hulp aub.
 
Edmoor bedankt voor de snelle reactie. Het zal een hele karwei zijn om de informatie hier uit te halen.
 
Er zit veel meer in die code dan waar je om vroeg. Het stukje voor de informatie die je zoekt is niet zo heel groot. Uiteraard moet je wel even uitzoeken welke referenties en evt. classes er bij nodig zijn. Ik heb dat niet uitgezocht, alleen die code voor je gevonden.
 
Na veel sukkelen heb ik dit gevonden:

Imports System.Management
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
For Each wmi_HD As ManagementObject In searcher.Get()
' If Size > 0 Then
ListBox1.Items.Add("Model:" & vbTab & wmi_HD("Model").ToString())
ListBox1.Items.Add("Type:" & vbTab & wmi_HD("InterfaceType").ToString())
' End If
Next wmi_HD
End Sub
End Class

Dat werkt wel maar niet zoals ik het wil.
1) Ik wil kunnen filteren op size maar dat geeft een error. Hoe kan ik dat toch gebruiken?
2) Op mijn pc geeft dit als interface IDE terwijl mijn harde schijf SATA is. Wat is er mis met mijn code?

Graag nog wat hulp aub.
 
Edmoor bedankt voor je reactie maar spijtig genoeg lukt dat niet. Ik heb ListBox1.Items.Add(wmi_HD("Size").ToString()) bijgevoegd aan de code die ik heb zoals in #5 en ik krijg een foutmelding, doe ik iets verkeerd?
 

Bijlagen

  • Naamloos.png
    Naamloos.png
    13,4 KB · Weergaven: 29
Ik had 'm wat simpeler gemaakt, dus zonder Listboxes. Dit doet het bij mij goed:
Code:
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive")
For Each wmi_HD As ManagementObject In searcher.Get()
    MsgBox("Model    : " & wmi_HD("Model").ToString() & vbCrLf &
           "Interface: " & wmi_HD("InterfaceType").ToString() & vbCrLf &
           "Size     : " & wmi_HD("Size").ToString())
Next wmi_HD
 
Dit geeft identiek dezelfde fout, ook zonder listbox. Zonder de size werkt het wel maar daar ben ik niks mee vooruit.
Moet ik misschien een referentie aan het project bijvoegen?
 
Haal de Size eens op in een variabele via Catch ex As Exeption. Ik denk dat de fout bij een bepaald device optreedt die ik niet heb en jij wel. Vraag er dan ook meteen de Caption bij op:
wmi_HD("Caption").ToString()
 
Laatst bewerkt:
Bedankt edmoor. Straf, nu met TRy-CATCH werkt het wel, ook naar een listbox. Ik kan ook een if bijvoegen zoals mijn eerste bedoeling was.
Maar mijn probleem is natuurlijk nog altijd dat mijn schijf nog altijd als IDE aangeduid wordt terwijl het een SATA schijf is zoals jij in #7 aanhaalde. Ik moet die info dus ergens anders gaan halen maar waar? Weet jij dat?
 
Het punt is dat IDE en SATA exact dezelfde logic interface hebben. Voor Windows is dus geen verschil. Daarom wordt het door WMI ook niet apart weergegeven. Het enige waar je naar kan kijken is of de Caption iets over ATA te melden heeft.
 
Dit heb ik er ondertussen op gevonden:

Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_IDEController")
For Each wmi_HD As ManagementObject In searcher.Get()
Try
ListBox2.Items.Add("Disk:")
ListBox2.Items.Add("Caption : " & wmi_HD("Caption").ToString)
ListBox2.Items.Add("Description : " & wmi_HD("Description").ToString)
ListBox2.Items.Add("Manufacturer: " & wmi_HD("Manufacturer").ToString)
ListBox2.Items.Add("Name : " & wmi_HD("Name").ToString)
ListBox2.Items.Add("SystemName : " & wmi_HD("SystemName").ToString)
ListBox2.Items.Add("StatusInfo : " & wmi_HD("StatusInfo").ToString)
Catch ex As Exception
End Try
Next

Daar zullen we het ondertussen mee moeten doen.
Edmoor bedankt voor de hulp, zonder u had het niet gelukt.

Joke
 
Ok dan.
Graag gedaan :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan