C# using System; using System.Runtime.InteropServices; //第一种 [DllImport("kernel32")] public static extern bool GetDiskFreeSpaceEx(string Path,out long bytesAvail, out long bytesOnDisk, out long freeBytesOnDisk); long bytesAvail, bytesOnDisk,freeBytesOnDisk,lpTotalNumberOfClusters; //lpRootPathName String,不包括卷名的一个磁盘根路径 //lpSectorsPerCluster Long,用于装载一个簇内扇区数的变量 //lpBytesPerSector Long,用于装载一个扇区内字节数的变量 //lpNumberOfFreeClusters Long,用于装载磁盘上剩余簇数的变量 //lpTtoalNumberOfClusters Long,用于装载磁盘上总簇数的变量 string tempImagePath = Application.StartupPath;//取出应用安装的目录。 GetDiskFreeSpaceEx(tempImagePath, out bytesAvail, out bytesOnDisk, out freeBytesOnDisk); textBox1.Text = (freeBytesOnDisk/1024/1024).ToString(); //第二种 引用System.Management ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk"); ManagementObjectCollection disks=diskClass.GetInstances(); System.UInt64 space=UInt64.MinValue; foreach(ManagementObject disk in disks) { if((disk["Name"]).ToString() == "C:") space = (System.UInt64)(disk["FreeSpace"]); } //第三种 framework 中已经有类了, 不需要调用 API Dim x As Long x = new System.IO.DriveInfo("c").AvailableFreeSpace vb.NET '第一种 Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" ( _ ByVal lpRootPathName As String, _ ByRef lpSectorsPerCluster As Long, _ ByRef lpBytesPerSector As Long, _ ByRef lpNumberOfFreeClusters As Long, _ ByRef lpTotalNumberOfClusters As Long) As Long 'vb要用这样的,后面几个用于返回的,要设置成地址传递,以下是各个参数的功能 'lpRootPathName String,不包括卷名的一个磁盘根路径 'lpSectorsPerCluster Long,用于装载一个簇内扇区数的变量 'lpBytesPerSector Long,用于装载一个扇区内字节数的变量 'lpNumberOfFreeClusters Long,用于装载磁盘上剩余簇数的变量 'lpTtoalNumberOfClusters Long,用于装载磁盘上总簇数的变量 Dim lpSectorsPerCluster, lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters As Long '方法里... Dim path As String path = Application.StartupPath() Dim x As Long x = GetDiskFreeSpace(path, lpSectorsPerCluster, lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters) TextBox1.Text = (x / 1024 / 1024).ToString() '第二种 Dim x As Long x = New System.IO.DriveInfo(path).AvailableFreeSpace TextBox1.Text = (x / 1024 / 1024).ToString()