Da ich hier immer wieder Probleme mit der WMI sehe, auch selber welche hatte, will ich euch hier mal n kleinen Code anbieten:
Oft wird gefragt "wie lese ich das und dass aus" "wie krieg ich die CPU ID raus" "woher krieg ich die information wie viel arbeitsspeicher im PC ist" und so weiter... Hier mal eine Allgemein gültige Anleitung:
Schritt 1: Der Download des Hilftools
Microsoft ist mal zu was zu Gebrauchen! Sie haben ein Nützliches kleines Tool geschrieben (Scriptomatic) mit welchem sich eigentlich Scripts schreiben lassen, um die WMI auszulesen... Aber wir Nutzen es mal für Unsere Zwecke... Das Tool gibs hier:
microsoft.com/downloads/en/det…c5-41e7-9da8-212c414a7ab0
Ladet es Herrunter, entpackt es mit dem Installer aufn Desktop und startet es (dauert n bischen)
Schritt 2: Die klasse Wählen
Haben wirs nun gestarte, sehen wir folgenden Bildschirm:
Hier haben wir nun die Möglichkeit eine Klasse auszuwählen.. Nehmen wir mal beispielsweise die Processor Klasse:
Nun sehen wir folgendes:
Stellt vorher einen Verweis auf die System.Management dll her! (Verweis -> Hinzufügen -> .Net -> System.Management)
Ersetzt dann die beiden Variablen namespace und class mit dem was ihr eben Rausgesucht habt, fertig ;) Schon spuckt euch euer Programm die Informationen aus...
Mithilfe dessen lässt sich eig alles über die WMI auslesen... Zeit, Prozessordaten, Arbeitsspeicher... z.B. Nützlich wenn man Hardware Infos anzeigen will oder sein Programm Hardware gebunden schützen will (Achtung! Einige ID's sind von PC zu PC gleich -> Die CPU ID haben viele CPU's gemeinsam, muss nichtmal der Selbe typ sein!)
Ich hoffe das Tut hilft euch.. Wenn ihr fragen habt, Postet ruhig ;)
MfG
Oft wird gefragt "wie lese ich das und dass aus" "wie krieg ich die CPU ID raus" "woher krieg ich die information wie viel arbeitsspeicher im PC ist" und so weiter... Hier mal eine Allgemein gültige Anleitung:
Schritt 1: Der Download des Hilftools
Microsoft ist mal zu was zu Gebrauchen! Sie haben ein Nützliches kleines Tool geschrieben (Scriptomatic) mit welchem sich eigentlich Scripts schreiben lassen, um die WMI auszulesen... Aber wir Nutzen es mal für Unsere Zwecke... Das Tool gibs hier:
microsoft.com/downloads/en/det…c5-41e7-9da8-212c414a7ab0
Ladet es Herrunter, entpackt es mit dem Installer aufn Desktop und startet es (dauert n bischen)
Schritt 2: Die klasse Wählen
Haben wirs nun gestarte, sehen wir folgenden Bildschirm:
Hier haben wir nun die Möglichkeit eine Klasse auszuwählen.. Nehmen wir mal beispielsweise die Processor Klasse:
Nun sehen wir folgendes:
Einen Fertigen Script... Hier können Wir uns nun die Nötigen informationen rausfischen, mal als Beispiel die CPU ID:On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem in colItems
Wscript.Echo "AddressWidth: " & objItem.AddressWidth
Wscript.Echo "Architecture: " & objItem.Architecture
Wscript.Echo "Availability: " & objItem.Availability
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode
Wscript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig
Wscript.Echo "CpuStatus: " & objItem.CpuStatus
Wscript.Echo "CreationClassName: " & objItem.CreationClassName
Wscript.Echo "CurrentClockSpeed: " & objItem.CurrentClockSpeed
Wscript.Echo "CurrentVoltage: " & objItem.CurrentVoltage
Wscript.Echo "DataWidth: " & objItem.DataWidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "DeviceID: " & objItem.DeviceID
Wscript.Echo "ErrorCleared: " & objItem.ErrorCleared
Wscript.Echo "ErrorDescription: " & objItem.ErrorDescription
Wscript.Echo "ExtClock: " & objItem.ExtClock
Wscript.Echo "Family: " & objItem.Family
Wscript.Echo "InstallDate: " & objItem.InstallDate
Wscript.Echo "L2CacheSize: " & objItem.L2CacheSize
Wscript.Echo "L2CacheSpeed: " & objItem.L2CacheSpeed
Wscript.Echo "L3CacheSize: " & objItem.L3CacheSize
Wscript.Echo "L3CacheSpeed: " & objItem.L3CacheSpeed
Wscript.Echo "LastErrorCode: " & objItem.LastErrorCode
Wscript.Echo "Level: " & objItem.Level
Wscript.Echo "LoadPercentage: " & objItem.LoadPercentage
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "MaxClockSpeed: " & objItem.MaxClockSpeed
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "NumberOfCores: " & objItem.NumberOfCores
Wscript.Echo "NumberOfLogicalProcessors: " & objItem.NumberOfLogicalProcessors
Wscript.Echo "OtherFamilyDescription: " & objItem.OtherFamilyDescription
Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
Wscript.Echo "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities
Wscript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
Wscript.Echo "ProcessorId: " & objItem.ProcessorId
Wscript.Echo "ProcessorType: " & objItem.ProcessorType
Wscript.Echo "Revision: " & objItem.Revision
Wscript.Echo "Role: " & objItem.Role
Wscript.Echo "SocketDesignation: " & objItem.SocketDesignation
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo "StatusInfo: " & objItem.StatusInfo
Wscript.Echo "Stepping: " & objItem.Stepping
Wscript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName
Wscript.Echo "SystemName: " & objItem.SystemName
Wscript.Echo "UniqueId: " & objItem.UniqueId
Wscript.Echo "UpgradeMethod: " & objItem.UpgradeMethod
Wscript.Echo "Version: " & objItem.Version
Wscript.Echo "VoltageCaps: " & objItem.VoltageCaps
Next
Heist für uns: Der Namespace dieser Information lautet ProcessorId... Nun Brauchen wir in VB diesen Code:Wscript.Echo "ProcessorId: " & objItem.ProcessorId
VB.NET-Quellcode
- Imports System
- Imports System.Management
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Try
- Dim class as String = "Win32_Processor" ' wo soll gesucht werden?
- Dim namespace as String = "ProcessorId" 'was suche ich?
- Dim searcher As New ManagementObjectSearcher( _
- "root\CIMV2", _
- "SELECT * FROM " & class
- For Each queryObj As ManagementObject In searcher.Get()
- Try
- MsgBox(queryObj(namespace))
- Catch
- End Try
- Next
- Catch err As ManagementException
- MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
- End Try
- End Sub
- End Class
Stellt vorher einen Verweis auf die System.Management dll her! (Verweis -> Hinzufügen -> .Net -> System.Management)
Ersetzt dann die beiden Variablen namespace und class mit dem was ihr eben Rausgesucht habt, fertig ;) Schon spuckt euch euer Programm die Informationen aus...
Mithilfe dessen lässt sich eig alles über die WMI auslesen... Zeit, Prozessordaten, Arbeitsspeicher... z.B. Nützlich wenn man Hardware Infos anzeigen will oder sein Programm Hardware gebunden schützen will (Achtung! Einige ID's sind von PC zu PC gleich -> Die CPU ID haben viele CPU's gemeinsam, muss nichtmal der Selbe typ sein!)
Ich hoffe das Tut hilft euch.. Wenn ihr fragen habt, Postet ruhig ;)
MfG