使用WMI获得硬盘的信息

硬盘

首先,什么是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 object

class 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 System

Imports 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 Integer

Dim diskClass As New ManagementClass("Win32_LogicalDisk")

diskClass.Get()

Console.WriteLine(("Logical Disk class has " & diskClass.Properties.Count.ToString() & " properties"))

Return 0

End Function

End Class

时间: 2024-09-27 01:31:53

使用WMI获得硬盘的信息的相关文章

asp使用wmi获取本地服务信息不成功

问题描述 asp使用wmi获取本地服务信息不成功 strComputer = "." Set objSWbemServices = GetObject("winmgmts:\" & strComputer & "rootCIMV2") Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM Win32_Service",,48) For

C#获取硬盘健康状况信息

问题描述 请问一下,C#如何获取简单的硬盘健康信息呢?比如HDtune里有重新分配扇区数量和当前待分配扇区数量这两项.在hdtune里有一些基本信息是打开立马能看到的,不用一步步检查搜索磁盘坏道.C#里该如何获取这些健康信息呢?有没有介绍这方面的资料,谢谢. 解决方案

WMI 获取系统硬件信息的难题!

问题描述 近日,为程序发布后的授权问题,想用系统硬件信息作为注册码的生成依据,但了很久,试了多种办法,下载了别人的小程序或者代码,但没有一个是完美的(至少我目前的测试结果是这样).我用WMI的查询功能,编写了简单的代码,做了一个图形化的界面,方便比较查询结果因此,想在此交流一下.以请教高手.是在VB.NET环境下,获取相关信息的后界面:说明:红蓝字体表示是WMI中的类,为方便比较,特意用不同的类与相关的属性(或方法)作为提取手段;文本框前面的说明字符(有的是缩写),是指类的相关属性名如图:图一,

通过WMI获得硬盘和CPU的物理序列号(VB.net)

硬盘 '获得硬盘序列号 Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint32 As UInt32 For Each cmicWmiObj As ManagementObject In cmicWmi.Get Uint32 = cmicWmiObj("signature") Next TextBox1.Text

用于获得硬盘物理信息的类

介绍: 有很多时候我需要知道机器的一些物理信息(比如激活技术),所以我就利用放高考假的时间,封装了一个可以获得硬盘的物理信息的类,方便大家.此类在我的机器上测试效果如下: CGetMachineInfo类简介: 类名: CGetMachineInfo 类中的一些要说明的函数: 功能 int ReadPhysicalDriveInNT (void) 在NT内核系统下读取硬盘的物理信息 int ReadDrivePortsInWin9X (void) 在9X内核系统下读取硬盘的物理信息 int Re

vbs wmi获取电脑硬件信息实例_vbs

Set wmi=GetObject("winmgmts:\\") Set board=wmi.instancesof("win32_baseboard") For Each b In board msg="主板:"&b.Manufacturer&vbTab&b.product&vbTab&Chr(13) Next msg=msg&Chr(13)&"---"+Chr(13)

linux系统获取硬盘使用信息_Linux

1.df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案系统的所有分割区磁盘使用量 T:显示每个分割区所属的档案系统名称 常用命令:df -hi 举例截图如下所示 2.du命令 du命令用来查询档案或目录的磁盘使用空间,通过man获取du命令的详细介

也许是好东西——Windows Script Host-3[获取硬盘分区信息]

window|硬盘 '************************************************' File:    GetDriveX.vbs (WSH sample in VBScript) ' Author:  (c) G. Born'' Showing the properties of a drive by using ' FileSystemObject'************************************************Option

VB.NET下获取硬盘信息的几种方法

硬盘 1.用API函数GetDiskFreeSpaceEx获取磁盘空间     Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _        (ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As Long, _        ByRef lpTota