如何获取磁盘分区信息及分区空间大小和已使用大小?使用API也可以。

解决方案 »

  1.   

    http://www.ddvip.net/web/aspnet/index2/21.htm
      

  2.   

    2.0中的DriveInfo类,
    1.1中如上。
      

  3.   

    http://blog.csdn.net/2066/archive/2004/07/25/51485.aspx
      

  4.   

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

  5.   

    在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可以找到,其中也还有部分示例代码