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 { }
}
}
}
}
C# 磁盘监控(远程/本地)
最新推荐文章于 2024-04-03 17:20:59 发布