C# 磁盘监控(远程/本地)

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Management;
using System.Net;
using System.Text;

namespace SYS_TEST.OtherClass
{
    //磁盘监控(远程/本地)
    //需要引用System.Management.dll
    public class RemoteMonitoring
    {
        private string strMsg = "";
        private long freesize = 0, size = 0;
        private long mb = 1024 * 1024;

        public void ThreadRun()
        {
            strMsg = "";
            string strHostName = Dns.GetHostName(); //取得本机的主机名
            IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
            string localip = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡,取得第一个IP
            string ip = "";
            DataSet ds = new DataSet();//此处需要自行绑定需要监控的ip数据集
            //循环遍历IP目录
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                try
                {
                    ip = dr["ip"].ToString().Trim();
                    long minsize = 800;//默认阀值(MB)
                    if (dr["minsize"].ToString().Trim() != "0")
                    {
                        minsize = long.Parse(dr["minsize"].ToString().Trim());
                    }
                    if (ip == localip)
                    {
                        #region 本机
                        foreach (DriveInfo drive in DriveInfo.GetDrives())
                        {
                            if (drive.DriveType == DriveType.Fixed)
                            {
                                freesize = drive.TotalFreeSpace / mb;
                                size = drive.TotalSize / mb;
                                if (freesize <= minsize)
                                {
                                    strMsg += ip + "磁盘" + drive.Name + "的可用空间为" + freesize + "MB,请及时清理!" + System.Environment.NewLine;
                                }
                                strMsg += "磁盘" + drive.Name + "的总空间:" + size + "MB!" + "     可用空间:" + freesize + "MB!" + System.Environment.NewLine;
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        #region 远程
                        ConnectionOptions connectionOptions = new ConnectionOptions();
                        connectionOptions.Username = "Administrator";
                        connectionOptions.Password = "password";
                        connectionOptions.Timeout = new TimeSpan(1, 1, 1, 1);//连接时间
                        //ManagementScope 的服务器和命名空间。
                        string path = string.Format("\\\\{0}\\root\\cimv2", ip);
                        ManagementScope scope = new ManagementScope(path, connectionOptions);
                        scope.Connect();
                        //查询字符串,某磁盘上信息
                        string strQuery = string.Format("select * from Win32_LogicalDisk");
                        ObjectQuery query = new ObjectQuery(strQuery);
                        //查询ManagementObjectCollection返回结果集
                        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                        foreach (ManagementObject m in searcher.Get())
                        {
                            if (m["DriveType"].ToString() == "3")
                            {
                                freesize = Convert.ToInt64(m["FreeSpace"]) / mb;
                                size = Convert.ToInt64(m["Size"]) / mb;
                                if (freesize <= minsize)
                                {
                                    strMsg += ip + "磁盘" + m["Name"].ToString() + "\\的可用空间为" + freesize + "MB,请及时清理!" + System.Environment.NewLine;
                                }
                                strMsg += "磁盘" + m["Name"].ToString() + "\\的总空间:" + size + "MB!" + "     可用空间:" + freesize + "MB!" + System.Environment.NewLine;
                            }
                        }
                        #endregion
                    }
                }
                catch { }
            }
        }
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值