C# 获取磁盘空间信息
2015-10-21 09:55
483 查看
获取本地或远程服务器磁盘用度,示例如下
1.获取本机磁盘用度
可通过 DriveInfo 或ManagementObjectSearcher两种方式A.DriveInfo
public void GetDriver() { long lsum = 0, ldr = 0; long gb = 1024 * 1024 * 1024; foreach (DriveInfo drive in DriveInfo.GetDrives()) { //判断是否是固定磁盘 if (drive.DriveType == DriveType.Fixed) { lsum = drive.TotalSize / gb; ldr = drive.TotalFreeSpace / gb; richTextBox1.Text += drive.Name + ": 总空间=" + lsum.ToString() + " 剩余空间=" + ldr.ToString()+"\n\r"; } } //progressBar1.Value = int.Parse((lsum - ldr).ToString()); //progressBar1.Maximum = int.Parse(lsum.ToString()); //lbMsg.Text = "磁盘" + disksrc + "的可用空间为" + ldr + "GB!"; }
B.ManagementObjectSearcher
需引入命名空间:using System.Management;(同时在项目中,通过添加引用方式添加)
public void GetDriveInfoDetail(string driveName) { WqlObjectQuery wqlObjectQuery = new WqlObjectQuery(string.Format("SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '{0}'", driveName.Substring(0, 2))); ManagementObjectSearcher managerSearch = new ManagementObjectSearcher(wqlObjectQuery); List<ulong> driveInfoList = new List<ulong>(2); foreach (ManagementObject mobj in managerSearch.Get()) { richTextBox1.Text += "Description: " + mobj["Description"] + "\r\n"; richTextBox1.Text += "File system: " + mobj["FileSystem"] + "\r\n"; richTextBox1.Text += "Free disk space: " + mobj["FreeSpace"] + "\r\n"; richTextBox1.Text += "Size: " + mobj["Size"] + "\r\n"; } }
调用示例:<pre name="code" class="csharp">GetDriveInfoDetail("D:");//注意盘符后要有:号
2.获取远程服务器磁盘用度
private void button2_Click(object sender, EventArgs e) { string ip = textBoxSrcPath.Text;//"172.16.5.214"; string disksrc = textBoxDirPath.Text + ":";//"D:"; string username = txtUsername.Text;//"Administrator"; // string password = txtPassword.Text;//"password"; long freesize = 0, size = 0; long gb = 1024 * 1024 * 1024; ConnectionOptions connectionOptions = new ConnectionOptions(); connectionOptions.Username = username; connectionOptions.Password = password; connectionOptions.Timeout = new TimeSpan(1, 1, 1, 1);//连接时间 //ManagementScope 的服务器和命名空间。 string path = string.Format("\\\\{0}\\root\\cimv2", ip); //表示管理操作的范围(命名空间),使用指定选项初始化ManagementScope 类的、表示指定范围路径的新实例。 ManagementScope scope = new ManagementScope(path, connectionOptions); scope.Connect(); //查询字符串,某磁盘上信息 string strQuery = string.Format("select * from Win32_LogicalDisk where deviceid='{0}'", disksrc); ObjectQuery query = new ObjectQuery(strQuery); //查询ManagementObjectCollection返回结果集 ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); foreach (ManagementObject m in searcher.Get()) { if (m["Name"].ToString() == disksrc) { //通过m["属性名"] freesize = Convert.ToInt64(m["FreeSpace"]) / gb; size = Convert.ToInt64(m["Size"]) / gb; } } txtdr.Text = freesize.ToString(); if (freesize <= 20) { lbMsg.ForeColor = Color.Red; lbMsg.Text = "磁盘" + disksrc + "的可用空间为" + freesize + "GB,请及时清理!"; } progressBar1.Maximum = int.Parse(size.ToString()); progressBar1.Value = int.Parse((size - freesize).ToString()); lbMsg.Text = "磁盘" + disksrc + "的可用空间为" + freesize + "GB!"; }
相关文章推荐
- C#连接ACCESS 配置web.config
- C#截取字符串(String.Substring方法)
- C#控件多线程更新用委托
- C# 之 Word光标移动 GoTo 方法
- wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键
- c# 之 New新知
- C#格式化小数位的方法
- C# 学习笔记
- C#数字图像处理算法学习笔记(二)--点运算与直方图
- C#学习日记28---索引器、重载索引器
- (原创)c#学习笔记04--流程控制03--分支03--switch语句
- C#中ToString()格式详解
- (原创)c#学习笔记04--流程控制03--分支02--if语句
- .NET 应用程序中的内存
- (原创)c#学习笔记04--流程控制03--分支01--三元运算符
- (原创)c#学习笔记04--流程控制02--goto语句
- (原创)c#学习笔记04--流程控制01--布尔逻辑03--运算符优先级
- (原创)c#学习笔记04--流程控制01--布尔逻辑02--按位运算符
- c#调用cmd(可输入指令)
- c# 读取xml常用方法