WMI AUSLESEN

    • VB.NET

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Alex2000.

      Hallo zusammen !
      In diesem Beitrag möchte ich paar Links und Beispiel Code veröffentlichen wie man in VB NET WMI (WINDOWS MANAGAMENT INTEFACE) ausliest. Zum Beispiel Ihr könnt auslesen:
      (LINKS ZU CODE SIEHE IM NÄCHSTEN BEITRAG)
      • System Informationen
      • Netzwerk- Konfiguration
      • Seriennummer eines Lauwerkes
      • Prozessorauslastung
      • Druckerwarteschlange
      • Installiertes Service-Pack
      uvm.....

      System Information auslesen:

      VB.NET-Quellcode

      1. Class Class1
      2. Public mos As Management.ManagementObjectSearcher
      3. Shared Sub Main()
      4. Dim mos As Management.ManagementObjectSearcher
      5. Dim moc As Management.ManagementObjectCollection
      6. Dim mo As Management.ManagementObject
      7. Dim pd As Management.PropertyData
      8. Console.WriteLine("Weiter mit ENTER!")
      9. Console.ReadLine()
      10. Console.WriteLine( _
      11. "Die Eigenschaften aller Laufwerke auslesen:")
      12. mos = New Management.ManagementObjectSearcher( _
      13. "select * from win32_logicaldisk")
      14. moc = mos.Get()
      15. For Each mo In moc
      16. Console.WriteLine("------------")
      17. For Each pd In mo.Properties
      18. Try
      19. Console.WriteLine(pd.Name + " = " + pd.Value.ToString)
      20. Catch
      21. End Try
      22. Next
      23. Console.ReadLine()
      24. Next
      25. moc.Dispose()
      26. mos.Dispose()
      27. Class1.computer()
      28. Console.ReadLine()
      29. Class1.domain()
      30. Console.ReadLine()
      31. Class1.os()
      32. Console.ReadLine()
      33. Class1.shutdown()
      34. Console.ReadLine()
      35. Class1.systemdir()
      36. Console.ReadLine()
      37. Class1.user1()
      38. Console.ReadLine()
      39. Console.WriteLine(user)
      40. Console.ReadLine()
      41. Console.WriteLine(Environment.CommandLine)
      42. Console.ReadLine()
      43. Console.WriteLine("Ende.")
      44. Console.ReadLine()
      45. Class1.enter()
      46. Console.ReadLine()
      47. End Sub
      48. Shared Sub enter()
      49. Console.WriteLine("Beenden mit ENTER.")
      50. End Sub
      51. Shared Sub computer()
      52. Console.WriteLine("Computername: " & Environment.MachineName)
      53. End Sub
      54. Shared Sub shutdown()
      55. Console.WriteLine("Shutdown: " &
      56. Environment.HasShutdownStarted)
      57. End Sub
      58. Shared Sub systemdir()
      59. Console.WriteLine("System-Ordner: " & _
      60. Environment.SystemDirectory)
      61. End Sub
      62. Shared Sub domain()
      63. Console.WriteLine("Aktive Domain: " & _
      64. Environment.UserDomainName)
      65. End Sub
      66. Shared Sub os()
      67. Console.WriteLine(Environment.OSVersion)
      68. End Sub
      69. Shared Sub user1()
      70. Console.WriteLine("Aktiver User: " & Environment.UserName)
      71. End Sub
      72. Private _lastacces As Date
      73. Private _lastwrite As Date
      74. Public Sub New(ByVal s As String)
      75. MyBase.new()
      76. _lastwrite = Now
      77. End Sub
      78. Public Function getlastacces() As Date
      79. Return _lastacces
      80. End Function
      81. Public Function getlastwrite() As Date
      82. Return _lastacces
      83. End Function
      84. Public Shared Property user()
      85. Get
      86. Return user
      87. End Get
      88. Set(ByVal s)
      89. user = s
      90. End Set
      91. End Property
      92. End Class
      93. CODE


      System Eintellungen auslesen:

      VB.NET-Quellcode

      1. Public Class Form1
      2. Inherits System.Windows.Forms.Form
      3. Vom Windows Form Designer generierter Code
      4. Dim oEnv As System.Environment
      5. Dim oItem As ListViewItem
      6. Private Sub Form1_Load(ByVal sender As System.Object, _
      7. ByVal e As System.EventArgs) Handles MyBase.Load
      8. lvwSystem.View = View.Details
      9. lvwSystem.Columns.Add("Eigenschaft", 140, _
      10. HorizontalAlignment.Left)
      11. lvwSystem.Columns.Add("Werte", 700, HorizontalAlignment.Left)
      12. FillSystemEinstellungen()
      13. End Sub
      14. Private Sub AddItems(ByVal lvw As ListView, ByVal sProperty _
      15. As String, ByVal sValue As String)
      16. oItem = New ListViewItem(sProperty)
      17. oItem.SubItems.Add(sValue)
      18. lvw.Items.Add(oItem)
      19. End Sub
      20. Private Sub FillSystemEinstellungen()
      21. AddItems(lvwSystem, "OS Version", _
      22. oEnv.OSVersion.Version.ToString)
      23. AddItems(lvwSystem, "CLR Version.Major", _
      24. oEnv.Version.Major.ToString)
      25. AddItems(lvwSystem, "CLR Version.Minor", _
      26. oEnv.Version.Minor.ToString)
      27. AddItems(lvwSystem, "CLR Version.Revision", _
      28. oEnv.Version.Revision.ToString)
      29. AddItems(lvwSystem, "CLR Version.Build", _
      30. oEnv.Version.Build.ToString)
      31. AddItems(lvwSystem, "OS Plattform", _
      32. oEnv.OSVersion.Platform.ToString)
      33. AddItems(lvwSystem, "MachineName", oEnv.MachineName.ToString)
      34. AddItems(lvwSystem, "SystemDirectory", _
      35. oEnv.SystemDirectory.ToString)
      36. AddItems(lvwSystem, "UserDomainName", _
      37. oEnv.UserDomainName.ToString)
      38. AddItems(lvwSystem, "UserInteractive", _
      39. oEnv.UserInteractive.ToString)
      40. AddItems(lvwSystem, "UserName", oEnv.UserName.ToString)
      41. AddItems(lvwSystem, "CurrentDirectory", _
      42. oEnv.CurrentDirectory.ToString)
      43. AddItems(lvwSystem, "WorkingSet", oEnv.WorkingSet.ToString)
      44. AddItems(lvwSystem, "CommandLine", oEnv.CommandLine.ToString)
      45. AddItems(lvwSystem, "TickCount", oEnv.TickCount.ToString)
      46. End Sub
      47. Private Sub Button1_Click(ByVal sender As System.Object, _
      48. ByVal e As System.EventArgs) Handles Button1.Click
      49. Me.Close()
      50. End Sub
      51. End Class
      52. CODE


      Betriebssystem ermitteln:

      VB.NET-Quellcode

      1. Public Function GetVersion() As String
      2. Dim osInfo As OperatingSystem
      3. osInfo = OSVersion
      4. With osInfo
      5. Select Case .Platform
      6. Case .Platform.Win32Windows
      7. Select Case (.Version.Minor)
      8. Case 0
      9. Return "Windows 95"
      10. Case 10
      11. If .Version.Revision.ToString() = "2222A" Then
      12. Return "Windows 98 Second Edition"
      13. Else
      14. Return "Windows 98"
      15. End If
      16. Case 90
      17. Return "Windows Me"
      18. End Select
      19. Case .Platform.Win32NT
      20. Select Case (.Version.Major)
      21. Case 3
      22. Return "Windows NT 3.51"
      23. Case 4
      24. Return "Windows NT 4.0"
      25. Case 5
      26. Select Case (.Version.Minor)
      27. Case 0
      28. Return "Windows 2000"
      29. Case 1
      30. Return "Windows XP"
      31. Case 2
      32. Return "Windows Server 2003"
      33. End Select
      34. Case Else
      35. Return "Failed"
      36. End Select
      37. End Select
      38. End With
      39. End Function
      40. CODE


      Druckerwarteschlange auslesen:

      VB.NET-Quellcode

      1. Imports System.Management
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, _
      4. ByVal e As System.EventArgs) Handles MyBase.Load
      5. ' ListView vorbereiten
      6. With ListView1
      7. With .Columns
      8. .Add("Dokument", 200)
      9. .Add("Drucker", 100)
      10. .Add("Status", 70)
      11. .Add("Seiten", 50, HorizontalAlignment.Center)
      12. .Add("Größe", 60, HorizontalAlignment.Right)
      13. .Add("Besitzer", 150)
      14. End With
      15. .View = View.Details
      16. .FullRowSelect = True
      17. End With
      18. End Sub
      19. Private Sub Button1_Click(ByVal sender As System.Object, _
      20. ByVal e As System.EventArgs) Handles Button1.Click
      21. ' Druckerwarteschlange auslesen und in ListView eintragen
      22. Me.Cursor = Cursors.WaitCursor
      23. With ListView1
      24. .Items.Clear()
      25. .BeginUpdate()
      26. ' WMI-Abfrage erstellen und ausführen
      27. Dim sQuery As String = "SELECT * FROM Win32_PrintJob"
      28. Dim Jobs As New ManagementObjectSearcher(sQuery)
      29. ' Schleife durchlaufen und Infos zu den Druckaufträgen ermitteln
      30. For Each Job As ManagementObject In Jobs.Get()
      31. Dim Document As String = WMIGetInfo(Job, "Document")
      32. Dim Printer As String = WMIGetInfo(Job, "DriverName")
      33. Dim Status As String = WMIGetInfo(Job, "JobStatus")
      34. Dim Pages As String = WMIGetInfo(Job, "PagesPrinted") & " von " & _
      35. WMIGetInfo(Job, "TotalPages")
      36. Dim Size As Integer = Val(WMIGetInfo(Job, "Size"))
      37. Dim Owner As String = WMIGetInfo(Job, "Owner")
      38. With .Items.Add(Document)
      39. .SubItems.Add(Printer)
      40. .SubItems.Add(Status)
      41. .SubItems.Add(Pages)
      42. .SubItems.Add(FormatNumber(Size / 1024, 1, , , TriState.True) & " KB")
      43. .SubItems.Add(Owner)
      44. End With
      45. Next
      46. .EndUpdate()
      47. End With
      48. Me.Cursor = Cursors.Default
      49. End Sub
      50. ''' <summary>
      51. ''' Hilfsfunktion. Gibt den Eigenschaftenwert des Objekts zurück, falls vorhanden.
      52. ''' Ist der Eigenschaftenwert nicht verfügbar, wird ein Leerstring zurückgegeben.
      53. ''' </summary>
      54. Private Function WMIGetInfo(ByVal WMIObj As ManagementObject, _
      55. ByVal Key As String) As String
      56. If Not WMIObj(Key) Is Nothing Then
      57. Return WMIObj(Key).ToString
      58. Else
      59. Return ""
      60. End If
      61. End Function
      62. End Class
      63. CODE


      FORTSETZUNG NÄCHSTE BEITRAG....

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von „Alex2000“ ()

      Fortsetzung...

      Freien Laufwerksplatz ermitteln:

      VB.NET-Quellcode

      1. Imports System.Management
      2. Public Class Form1
      3. Public Function GetDiskSpace(ByVal drive As String) _
      4. As System.UInt64
      5. Dim diskClass As New ManagementClass("Win32_LogicalDisk")
      6. Dim disks As ManagementObjectCollection = _
      7. diskClass.GetInstances()
      8. Dim disk As ManagementObject
      9. Dim space As System.UInt64
      10. drive = drive.ToUpper.Substring(0, 2)
      11. For Each disk In disks
      12. If CStr(disk("Name")) = drive Then
      13. space = CType(disk("FreeSpace"), System.UInt64)
      14. End If
      15. Next disk
      16. Return space
      17. End Function
      18. Private Sub Form1_Load(ByVal sender As System.Object, _
      19. ByVal e As System.EventArgs) Handles MyBase.Load
      20. ListBox1.DataSource = Environment.GetLogicalDrives()
      21. End Sub
      22. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As _
      23. System.Object, ByVal e As System.EventArgs) Handles _
      24. ListBox1.SelectedIndexChanged
      25. Dim b, kb, mb, gb As Double
      26. Label1.Text = "Bitte warten..."
      27. Label2.Text = ""
      28. Label3.Text = ""
      29. Label4.Text = ""
      30. Label5.text = ""
      31. Label1.Refresh()
      32. Label2.Refresh()
      33. Label3.Refresh()
      34. Label4.Refresh()
      35. Label5.Refresh()
      36. Cursor.Current = Cursors.WaitCursor()
      37. b = CDbl((GetDiskSpace( _
      38. ListBox1.SelectedItem.ToString)).ToString)
      39. kb = b * 1 / 1024
      40. mb = b * 1 / 1048576
      41. gb = b * 1 / 1073741824
      42. Label1.Text = b.ToString("n") & " Byte"
      43. Label2.Text = kb.ToString("f3") & " KiloByte"
      44. Label3.Text = mb.ToString("f3") & " MegaByte"
      45. Label4.Text = gb.ToString("f3") & " GigaByte"
      46. Label5.Text = "Freier Platz auf Laufwerk " & _
      47. ListBox1.SelectedItem.ToString
      48. Cursor.Current = Cursors.Default()
      49. End Sub
      50. Private Sub Button1_Click(ByVal sender As System.Object, _
      51. ByVal e As System.EventArgs) Handles Button1.Click
      52. Me.Close()
      53. End Sub
      54. End Class



      Windows beenden:

      VB.NET-Quellcode

      1. Public Class Form1
      2. Inherits System.Windows.Forms.Form
      3. Vom Windows Form Designer generierter Code
      4. Private Sub Button1_Click_1(ByVal sender As System.Object, _
      5. ByVal e As System.EventArgs) Handles Button1.Click
      6. Dim oBetriebssystem, oEigenschaft As Object
      7. oBetriebssystem = GetObject( _
      8. "winmgmts:{impersonationLevel=impersonate,(Shutdown)}" & _
      9. "//./root/cimv2").ExecQuery( _
      10. "SELECT * FROM Win32_OperatingSystem")
      11. If RadioButton1.Checked = True Then
      12. If MessageBox.Show("Die Windows-Sitzung wird beendet " & _
      13. "und der Computer heruntergefahren.", _
      14. "Computer herunterfahren", _
      15. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      16. For Each oEigenschaft In oBetriebssystem
      17. oEigenschaft.Shutdown()
      18. Next
      19. End If
      20. Else
      21. If MessageBox.Show("Die Windows-Sitzung wird beendet " & _
      22. "und der Computer neu gestartet.", _
      23. "Computer neu starten", _
      24. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      25. For Each oEigenschaft In oBetriebssystem
      26. oEigenschaft.Reboot()
      27. Next
      28. End If
      29. End If
      30. End Sub
      31. Private Sub Button2_Click(ByVal sender As System.Object, _
      32. ByVal e As System.EventArgs) Handles Button2.Click
      33. Dim oBetriebssystem, oEigenschaft As Object
      34. Dim bytErzwingen As Byte
      35. oBetriebssystem = GetObject( _
      36. "winmgmts:{impersonationLevel=impersonate,(Shutdown)}" & _
      37. "//./root/cimv2").ExecQuery( _
      38. "SELECT * FROM Win32_OperatingSystem")
      39. If CheckBox1.Checked = True Then
      40. bytErzwingen = 4
      41. End If
      42. If RadioButton3.Checked = True Then
      43. If MessageBox.Show("Die Windows-Sitzung wird beendet " & _
      44. "und der Computer heruntergefahren.", _
      45. "Computer herunterfahren", _
      46. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      47. For Each oEigenschaft In oBetriebssystem
      48. oEigenschaft.Win32Shutdown(1 + bytErzwingen)
      49. Next
      50. End If
      51. End If
      52. If RadioButton4.Checked = True Then
      53. If MessageBox.Show("Die Windows-Sitzung wird beendet " & _
      54. "und der Computer neu gestartet.", _
      55. "Computer neu starten", _
      56. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      57. For Each oEigenschaft In oBetriebssystem
      58. oEigenschaft.Win32Shutdown(2 + bytErzwingen)
      59. Next
      60. End If
      61. End If
      62. If RadioButton5.Checked = True Then
      63. If MessageBox.Show("Der aktuelle Benutzer wird " & _
      64. "abgemeldet.", "Benutzer abmelden", _
      65. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      66. For Each oEigenschaft In oBetriebssystem
      67. oEigenschaft.Win32Shutdown(0 + bytErzwingen)
      68. Next
      69. End If
      70. End If
      71. If RadioButton6.Checked = True Then
      72. If MessageBox.Show("Die Windows-Sitzung wird beendet " & _
      73. "und der Computer abgeschalten.", _
      74. "Computer ausschalten", _
      75. MessageBoxButtons.OKCancel) = DialogResult.OK Then
      76. For Each oEigenschaft In oBetriebssystem
      77. oEigenschaft.Win32Shutdown(8 + bytErzwingen)
      78. Next
      79. End If
      80. End If
      81. End Sub
      82. Private Sub Button3_Click(ByVal sender As System.Object, _
      83. ByVal e As System.EventArgs) Handles Button3.Click
      84. Me.Close()
      85. End Sub
      86. End Class
      87. CODE


      Seriennummer eines Laufwerkes auslesen:

      VB.NET-Quellcode

      1. Private Function GetDriveSerialNumber(ByVal drive As String) As String
      2. Dim driveSerialnumber As String = String.Empty
      3. Dim driveFixed As String = Path.GetPathRoot(drive).Replace("\", "")
      4. Dim wmiQuery As String = "SELECT VolumeSerialNumber FROM Win32_LogicalDisk Where Name = '" + driveFixed + "'"
      5. Using driveSearcher As New ManagementObjectSearcher(wmiQuery)
      6. Using driveCollection As ManagementObjectCollection = driveSearcher.[Get]()
      7. For Each moItem As ManagementObject In driveCollection
      8. driveSerialnumber = Convert.ToString(moItem("VolumeSerialNumber"))
      9. Next
      10. End Using
      11. End Using
      12. Return driveSerialnumber
      13. End Function
      14. CODE


      Prozessor Informationen:

      VB.NET-Quellcode

      1. Imports System.Management
      2. Module Module1
      3. Sub Main()
      4. ' Processor Information
      5. Dim objQuery As New ObjectQuery("SELECT * FROM Win32_Processor")
      6. Dim searcher As New ManagementObjectSearcher(objQuery)
      7. For Each mem As ManagementObject In searcher.Get
      8. Console.WriteLine("Taktrate: " & Convert.ToUInt64(mem("CurrentClockSpeed")).ToString)
      9. Console.WriteLine("Max. Taktrate: " & Convert.ToUInt64(mem("MaxClockSpeed")).ToString)
      10. Console.WriteLine("Hersteller: " & mem("Manufacturer"))
      11. Console.WriteLine("Beschreibung: " & mem("Description"))
      12. Console.WriteLine("Name: " & mem("Name"))
      13. Next
      14. Console.ReadLine()
      15. End Sub
      16. End Module
      17. CODE



      wietere Links finde Sie hier

      ########################################################################

      Seriennummer eines Laufwerkes auslesen
      System-Informationen auslesen
      Aktuelle Druckaufträge auslesen
      Benutzeridentität auslesen
      Systemeinstellungen auslesen
      Betriebssystem ermitteln
      Aktuelle Druckaufträge auslesen
      Freien Laufwerksplatz ermitteln
      Windows beenden
      Lokale IP-Adresse ermitteln
      IP-Adresse berechnen
      MAC-Adresse auslesen
      CPU-Daten abfragen

      ########################################################################

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Alex2000“ ()