ComputerVerwaltung auslesen mit System.Management.ManagementObjectSearcher (WMI)

    • VB.NET

      ComputerVerwaltung auslesen mit System.Management.ManagementObjectSearcher (WMI)

      hier ein paar primitive Abfragen mittels ManagementObjectSearcher - die Abfragen sind in der Combo hinterlegt.
      Und dann ist das Ergebnis einfach als ParentChildView Query->Property mit 2 DatagridViews dargestellt:

      VB.NET-Quellcode

      1. Imports System.Management
      2. Public Class Form1
      3. Dim searcher As New ManagementObjectSearcher
      4. Private _Queries As String() = "Win32_Processor Win32_PnPEntity Win32_BaseBoard Win32_BIOS Win32_DiskDrive Win32_IDEController Win32_NetworkAdapter".Split
      5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      6. cmbQuery.DataSource = _Queries
      7. End Sub
      8. Private Sub cmbQuery_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbQuery.SelectedIndexChanged
      9. searcher.Query = New SelectQuery(_Queries(cmbQuery.SelectedIndex))
      10. ManagementObjectBindingSource.DataSource = searcher.Get.OfType(Of ManagementObject).ToList
      11. End Sub
      12. Private Sub ManagementObjectBindingSource_CurrentChanged(sender As Object, e As EventArgs) Handles ManagementObjectBindingSource.CurrentChanged
      13. Dim mob = DirectCast(ManagementObjectBindingSource.Current, ManagementObject)
      14. PropertyBindingSource.DataSource = mob.Properties.OfType(Of PropertyData)().ToList
      15. End Sub
      16. End Class


      Ich hab keine Ahnung, was das ganze Zeugs bedeutet, bedeutet aber sicher viel ;)
      Und das ist nur die Query->Property - Relation, die hier abgebildet ist, es bestehen scheinbar noch weitere Relationen, etwa Query->Qualifiers, und auch manche Properties haben SubProperties, die selbst wieder Auflistungen sind (also wieder eine Relation)

      Zur Übung ist noch ein Button dabei, der eine speziellere Eigenschaft abruft:

      VB.NET-Quellcode

      1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      2. Dim searcher = New ManagementObjectSearcher
      3. searcher.Query = New SelectQuery("Win32_DiskDrive")
      4. For Each mob As ManagementBaseObject In searcher.Get()
      5. MessageBox.Show(mob("Signature").ToString)
      6. Next
      7. End Sub


      Für wem mein Alles-Abfrager zu kompliziert ist, der kann sich auch das Einfach-Sample auf Msdn angucken.
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()