如何利用WMI获取远程主机的磁盘信息
//创建WMI连接对象,注意引用System.Management命名空间,需要先在项目引用中添加,然后代码中using
ConnectionOptions conn = new ConnectionOptions()
conn.Username = user//远程主机用户名,注意,必需是管理员权限
conn.Password = pwd//密码
conn.Authority = "ntlmdomain:DOMAIN" // 这句很重要
conn.Timeout = new TimeSpan(1, 1, 1, 1)//连接时间
//ManagementScope 的服务器和命名空间。
string path = string.Format(@"\\{0}\root\cimv2", address)
//表示管理操作的范围(命名空间),使用指定选项初始化ManagementScope 类的、表示指定范围路径的新实例。
ManagementScope scope = new ManagementScope(path, conn)
scope.Connect()//打开连接方法,如果执行到这里报出拒绝访问的错误,请检查目标账号是否为目标主机管理员账号,或者目标主机WMI服务是否开启
//查询
string strQuery = "select * from Win32_LogicalDisk where Name = 'D:'"//查询语句,这里是查询D盘存储信息
ObjectQuery query = new ObjectQuery(strQuery)
//查询ManagementObjectCollection返回结果集
ManagementObjectSearcher wmifind = new ManagementObjectSearcher(scope, query)
long gb = 1024 * 1024 * 1024
string type = ""
foreach (var mobj in wmifind.Get()) //循环结果集
{
type = mobj["Description"].ToString()
//判断是否是本机固盘
if (type == "Local Fixed Disk")
{
int free = (int)Math.Round(Convert.ToDouble(mobj["FreeSpace"]) / gb, 0)//获取到可用空间
int size = (int)Math.Round(Convert.ToDouble(mobj["Size"].ToString()) / gb, 0)//获取到总空间
int use = size - free//已用空间
}
}
以上,就是可以在无服务端程序的情况下,获取目标主机磁盘使用情况的代码,当然为了安全考虑,请务必做好账号和密码的加密工作
版权声明:本文为博主原创文章,转载请附上博文链接!
一看就知道是局域网的地址,你当然访问不了。如果是你们局域网的,那么就是没有开吧!
如果是广域网上的,就是说的internet上的,那么应该是对方是一个服务器集群,但现在出现问题所以打不开。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)