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

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); } ///

/// 获取远程Windows系统的OS信息 /// /// 远程主机 /// 远程主机的用户名 /// 密码 /// 操作系统信息,或报告错误信息 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。

 

 

你可能感兴趣的:(C#与WMI(二):查看远程Windows计算机的操作系统信息)