您的位置:首页 > 理论基础

C#与WMI(二):查看远程Windows计算机的操作系统信息

2010-10-21 15:51 1491 查看
WMI可以查看远程系统,但是也是有前提的:

1 要有对方计算机操作足够的权限;

2 相关服务及端口都工作正常。

我编写代码及测试的时候用的都是域管理员账号,在单位局域网内,不牵涉防火墙的问题。以下的代码就是在这个环境下测试通过的,它演示了获取远端Windows系统的OS信息,甚至安装的日期。

private ManagementScope getManagementScope(string Host, string UID, string PWD)
{
ConnectionOptions connOption = new ConnectionOptions();
connOption.Username = UID.Trim();
connOption.Password = PWD;
return new ManagementScope("////" + Host.Trim() + "//root//cimv2", connOption);
}

/// <summary>
/// 获取远程Windows系统的OS信息
/// </summary>
/// <param name="Host">远程主机</param>
/// <param name="UID">远程主机的用户名</param>
/// <param name="PWD">密码</param>
/// <returns>操作系统信息,或报告错误信息</returns>
public string GetOSInfo(string Host, string UID, string PWD)
{
string rtn = "";
ManagementScope mms = null;
ManagementObjectSearcher cmd = null;
ManagementObjectCollection objs = null;
try
{
mms = getManagementScope(Host, UID, PWD);
string sql = "Select * from Win32_OperatingSystem";
cmd = new ManagementObjectSearcher(mms, new ObjectQuery(sql));
objs = cmd.Get();
foreach (ManagementObject obj in objs)
{
rtn += obj["Caption"].ToString().Trim() + "/r/n";
rtn += obj["InstallDate"].ToString() + "/r/n";
}
}
catch (Exception ex)
{
rtn = "运行错误:" + ex.Message;
}
finally
{
mms = null;
if (cmd != null)
cmd.Dispose();
if (objs != null)
objs.Dispose();
}
return rtn;
}


这段代码主要是想演示如何连接远程系统,包含两个函数,其中getManagementScope就看成是建立一个WMI的连接,其中包含了用户名和密码信息。

通过WMI能得到的信息很多,可以参考Script Center。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐