首先,什么是WMI? WMI(Windows管理架构:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)和 Desktop Management Task Force(DMTF)工业标准的实现. 就是一种基于标准的系统管理的开发接口,这组接口用来控制管理计算机. 它提供了一种简单的方法来管理和控制系统资源. 如果你想深入了解他,可以参考Micorosft Platform SDK . 在这我们只是通过它实现一个简单的功能, 得到我们系统中硬盘的相关信息. 我们需要使用.net Framwork里面System.Management名字空间下提供的类来实现. using System; using System.Management; using System.Collections; using System.Collections.Specialized; namespace ACE_Console { class ACE_Console { [STAThread] static void Main(string[] args) { StringCollection propNames = new StringCollection(); ManagementClass driveClass = new ManagementClass("Win32_DiskDrive"); PropertyDataCollection props = driveClass.Properties; foreach (PropertyData driveProperty in props) { propNames.Add(driveProperty.Name); } int idx = 0; ManagementObjectCollection drives = driveClass.GetInstances(); foreach (ManagementObject drv in drives) { Console.WriteLine(" Drive({0}) Properties ", idx+1); foreach (string strProp in propNames) { Console.WriteLine("Property: {0}, Value: {1}", strProp, drv[strProp]); } } } } }
.net Framework SDK自带的帮助里有获得逻辑硬盘大小的代码: [C#]using System;using System.Management; // This example demonstrates getting information about a class using the ManagementClass objectclass Sample_ManagementClass{ public static int Main(string[] args) { ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk"); diskClass.Get(); Console.WriteLine("Logical Disk class has " + diskClass.Properties.Count + " properties"); return 0; }} [vb] Imports SystemImports System.Management // This example demonstrates getting information about a class using the ManagementClass Class Sample_ManagementClass Overloads Public Shared Function Main(args() As String) As IntegerDim diskClass As New ManagementClass("Win32_LogicalDisk")diskClass.Get()Console.WriteLine(("Logical Disk class has " & diskClass.Properties.Count.ToString() & " properties"))Return 0End FunctionEnd Class
在VB中使用WMI获取系统硬件和软件有关信息http://dev.csdn.net/develop/article/23/23371.shtm简介: WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。实例如下:'用WMI,先工程-引用 Microsoft WMI Scripting V1.1 Library 获取显卡/声卡/内存/操作系统的信息 声卡信息Private Sub wmiSoundDeviceInfo() Dim wmiObjSet As SWbemObjectSet Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _ InstancesOf("Win32_SoundDevice") On Local Error Resume Next
For Each obj In wmiObjSet MsgBox obj.ProductName Next End Sub 显卡信息Private Sub wmiVideoControllerInfo() Dim wmiObjSet As SWbemObjectSet Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _ InstancesOf("Win32_VideoController")
On Local Error Resume Next
For Each obj In wmiObjSet MsgBox obj.VideoProcessor Next End Sub内存信息Private Sub wmiPhysicalMemoryInfo() Dim wmiObjSet As SWbemObjectSet Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _ InstancesOf("Win32_PhysicalMemory")
On Local Error Resume Next
For Each objItem In wmiObjSet Debug.Print "BankLabel: " & objItem.BankLabel Debug.Print "Capacity: " & objItem.Capacity Debug.Print "Caption: " & objItem.Caption Debug.Print "CreationClassName: " & objItem.CreationClassName Debug.Print "DataWidth: " & objItem.DataWidth Debug.Print "Description: " & objItem.Description Debug.Print "DeviceLocator: " & objItem.DeviceLocator Debug.Print "FormFactor: " & objItem.FormFactor Debug.Print "HotSwappable: " & objItem.HotSwappable Debug.Print "InstallDate: " & objItem.InstallDate Debug.Print "InterleaveDataDepth: " & objItem.InterleaveDataDepth Debug.Print "InterleavePosition: " & objItem.InterleavePosition Debug.Print "Manufacturer: " & objItem.Manufacturer Debug.Print "MemoryType: " & objItem.MemoryType Debug.Print "Model: " & objItem.Model Debug.Print "Name: " & objItem.name Debug.Print "OtherIdentifyingInfo: " & objItem.OtherIdentifyingInfo Debug.Print "PartNumber: " & objItem.PartNumber Debug.Print "PositionInRow: " & objItem.PositionInRow Debug.Print "PoweredOn: " & objItem.PoweredOn Debug.Print "Removable: " & objItem.Removable Debug.Print "Replaceable: " & objItem.Replaceable Debug.Print "SerialNumber: " & objItem.SerialNumber Debug.Print "SKU: " & objItem.SKU Debug.Print "Speed: " & objItem.Speed Debug.Print "Status: " & objItem.Status Debug.Print "Tag: " & objItem.Tag Debug.Print "TotalWidth: " & objItem.TotalWidth Debug.Print "TypeDetail: " & objItem.TypeDetail Debug.Print "Version: " & objItem.Version Next End Sub操作系统信息Private Sub Command1_Click() Dim wmiObjSet As SWbemObjectSet Dim obj As SWbemObject Dim msg As String Dim dtb As String Dim d As String Dim t As String Dim bias As Long On Local Error Resume Next Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_OperatingSystem") For Each obj In wmiObjSet MsgBox "你当前使用的系统是 " & obj.Caption Next End Sub说明:大家可能会发现一个规律,实际上WMI对信息的提取都是使用了WIN32_类库名这样的规律,下列表格就是微软的操作系统各种硬件类的描述其它WMI管理的类的信息在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/accessing_hardware_and_software_through_wmi.asp可以找到,其中也还有部分示例代码
1.1中如上。
WMI(Windows管理架构:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)和 Desktop Management Task Force(DMTF)工业标准的实现. 就是一种基于标准的系统管理的开发接口,这组接口用来控制管理计算机. 它提供了一种简单的方法来管理和控制系统资源.
如果你想深入了解他,可以参考Micorosft Platform SDK . 在这我们只是通过它实现一个简单的功能, 得到我们系统中硬盘的相关信息.
我们需要使用.net Framwork里面System.Management名字空间下提供的类来实现.
using System;
using System.Management;
using System.Collections;
using System.Collections.Specialized;
namespace ACE_Console
{
class ACE_Console
{
[STAThread]
static void Main(string[] args)
{
StringCollection propNames = new StringCollection();
ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
PropertyDataCollection props = driveClass.Properties;
foreach (PropertyData driveProperty in props)
{
propNames.Add(driveProperty.Name);
}
int idx = 0;
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drv in drives)
{
Console.WriteLine(" Drive({0}) Properties ", idx+1);
foreach (string strProp in propNames)
{
Console.WriteLine("Property: {0}, Value: {1}", strProp, drv[strProp]);
}
}
}
}
}
.net Framework SDK自带的帮助里有获得逻辑硬盘大小的代码:
[C#]using System;using System.Management; // This example demonstrates getting information about a class using the ManagementClass objectclass Sample_ManagementClass{ public static int Main(string[] args) { ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk"); diskClass.Get(); Console.WriteLine("Logical Disk class has " + diskClass.Properties.Count + " properties"); return 0; }}
[vb]
Imports SystemImports System.Management // This example demonstrates getting information about a class using the ManagementClass Class Sample_ManagementClass
Overloads Public Shared Function Main(args() As String) As IntegerDim diskClass As New ManagementClass("Win32_LogicalDisk")diskClass.Get()Console.WriteLine(("Logical Disk class has " & diskClass.Properties.Count.ToString() & " properties"))Return 0End FunctionEnd Class
Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。实例如下:'用WMI,先工程-引用 Microsoft WMI Scripting V1.1 Library 获取显卡/声卡/内存/操作系统的信息 声卡信息Private Sub wmiSoundDeviceInfo() Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_SoundDevice")
On Local Error Resume Next
For Each obj In wmiObjSet
MsgBox obj.ProductName
Next
End Sub 显卡信息Private Sub wmiVideoControllerInfo() Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_VideoController")
On Local Error Resume Next
For Each obj In wmiObjSet
MsgBox obj.VideoProcessor
Next
End Sub内存信息Private Sub wmiPhysicalMemoryInfo() Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_PhysicalMemory")
On Local Error Resume Next
For Each objItem In wmiObjSet
Debug.Print "BankLabel: " & objItem.BankLabel
Debug.Print "Capacity: " & objItem.Capacity
Debug.Print "Caption: " & objItem.Caption
Debug.Print "CreationClassName: " & objItem.CreationClassName
Debug.Print "DataWidth: " & objItem.DataWidth
Debug.Print "Description: " & objItem.Description
Debug.Print "DeviceLocator: " & objItem.DeviceLocator
Debug.Print "FormFactor: " & objItem.FormFactor
Debug.Print "HotSwappable: " & objItem.HotSwappable
Debug.Print "InstallDate: " & objItem.InstallDate
Debug.Print "InterleaveDataDepth: " & objItem.InterleaveDataDepth
Debug.Print "InterleavePosition: " & objItem.InterleavePosition
Debug.Print "Manufacturer: " & objItem.Manufacturer
Debug.Print "MemoryType: " & objItem.MemoryType
Debug.Print "Model: " & objItem.Model
Debug.Print "Name: " & objItem.name
Debug.Print "OtherIdentifyingInfo: " & objItem.OtherIdentifyingInfo
Debug.Print "PartNumber: " & objItem.PartNumber
Debug.Print "PositionInRow: " & objItem.PositionInRow
Debug.Print "PoweredOn: " & objItem.PoweredOn
Debug.Print "Removable: " & objItem.Removable
Debug.Print "Replaceable: " & objItem.Replaceable
Debug.Print "SerialNumber: " & objItem.SerialNumber
Debug.Print "SKU: " & objItem.SKU
Debug.Print "Speed: " & objItem.Speed
Debug.Print "Status: " & objItem.Status
Debug.Print "Tag: " & objItem.Tag
Debug.Print "TotalWidth: " & objItem.TotalWidth
Debug.Print "TypeDetail: " & objItem.TypeDetail
Debug.Print "Version: " & objItem.Version
Next
End Sub操作系统信息Private Sub Command1_Click()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Dim msg As String
Dim dtb As String
Dim d As String
Dim t As String
Dim bias As Long
On Local Error Resume Next
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_OperatingSystem")
For Each obj In wmiObjSet
MsgBox "你当前使用的系统是 " & obj.Caption
Next
End Sub说明:大家可能会发现一个规律,实际上WMI对信息的提取都是使用了WIN32_类库名这样的规律,下列表格就是微软的操作系统各种硬件类的描述其它WMI管理的类的信息在http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/accessing_hardware_and_software_through_wmi.asp可以找到,其中也还有部分示例代码