1. wmi连接前提

利用wmi来连接远端计算机首先要具有远端计算机管理员的用户名和密码。如果计算机在域中的话,要有域管理员用户名和密码,或者是把域帐户加入本机管理员组中也可以。

2. 相关类的用法--- ConnectionOptions和ManagementScope

ConnectionOptions用于设置连接选项,比如设置所连接机器的域,用户名,密码等。ManagementScope用于连接的实际操作。

   :  using System;
: using System.Collections.Generic;
: using System.Text;
: using System.Management;
:
: namespace TJVictor.WMI
: {
: public class WMIBaseClass
: {
: #region Property
: private ConnectionOptions connection;
:
: private ManagementScope scope;
: public ManagementScope Scope
: {
: get { return scope; }
: set { scope = value; }
: }
:
: private string domain;
: public string Domain
: {
: get { return domain; }
: set { domain = value; }
: }
:
: private string ip;
: public string Ip
: {
: get { return ip; }
: set { ip = value; }
: }
:
: private string user;
: public string User
: {
: get { return user; }
: set { user = value; }
: }
:
: private string password;
: public string Password
: {
: get { return password; }
: set { password = value; }
: }
:
: private string nameSpace;
: public string NameSpace
: {
: get { return nameSpace; }
: set { nameSpace = value; }
: }
: #endregion
:
: #region Construction
: public WMIBaseClass()
: {
: this.domain = string.Empty;
: this.ip = string.Empty;
: this.user = string.Empty;
: this.password = string.Empty;
: this.nameSpace = "root//cimv2";
: }
:
: public WMIBaseClass(string ip, string user, string password)
: {
: this.domain = string.Empty;
: this.ip = ip;
: this.user = user;
: this.password = password;
: this.nameSpace = "root//cimv2";
: }
:
: public WMIBaseClass(string domain, string ip, string user, string password)
: {
: this.domain = domain;
: this.ip = ip;
: this.user = user;
: this.password = password;
: this.nameSpace = "root//cimv2";
: }
:
: public WMIBaseClass(string domain, string ip, string user, string password, string nameSpace)
: {
: this.domain = domain;
: this.ip = ip;
: this.user = user;
: this.password = password;
: this.nameSpace = nameSpace;
: }
: #endregion
:
: #region protected function
: protected virtual void Connection()
: {
: this.scope = Cache.CacheClass.Get(this.ip) as ManagementScope;
: if (this.scope == null)
: {
: connection = new ConnectionOptions();
: if (!domain.Equals(string.Empty))
: connection.Authority = "ntlmdomain:" + this.domain;
: if (!user.Equals(string.Empty))
: connection.Username = this.user;
: if (!password.Equals(string.Empty))
: connection.Password = this.password;
: string temp = string.Empty;
: if (ip.Equals(string.Empty))
: temp = "////" + "." + "//" + this.nameSpace;////" + this.ip + "//" + this.nameSpace;
: else
: temp = "
: scope = new ManagementScope(temp, connection);
: if (!scope.IsConnected)
: scope.Connect();
: Cache.CacheClass.Insert(this.ip, scope);
: }
: else
: {
: if (!scope.IsConnected)
: scope.Connect();
: }
: }
:
: protected virtual void DisConnection(string key)
: {
: Cache.CacheClass.Remove(key);
: }
:
: protected virtual ManagementObjectCollection GetSelectQueryCollection(string wqlSelect, string condition)
: {
: SelectQuery query = new SelectQuery(string.Format(wqlSelect, condition));
: ManagementObjectSearcher mos = new ManagementObjectSearcher(scope, query);
: return mos.Get();
: }
:
: protected virtual ManagementObjectSearcher GetObjectSearcher(string wqlSelect, string condition)
: {
: SelectQuery query = new SelectQuery(string.Format(wqlSelect, condition));
: return new ManagementObjectSearcher(scope, query);
: }
: #endregion
: }
: } . 代码说明 由于连接远端机器是所有wmi操作的第一步,所以我们把连接wmi作为一个基类,以后所有对wmi操作的类都继承这个类。 其中Connection()函数就是建立远端连接。其实很简单,如果只要把域、用户名、密码、IP、wmi命名空间等属性设置完成,就可以利用wmi提供的scope.Connect();来尝试连接远端机器。 Wmi中没有释放连接的函数。也就是说,当这个类被GC回收后,远端连接也就自动被释放了,否则与远端机器一直都处于连接状态。

使用WMI来连接远端计算机的更多相关文章

  1. 如何通过SecureCRTPortable.exe 软件远程连接某个计算机(或者虚拟机)中的某个数据库

    1)双击SecureCRTPortable.exe - 快捷方式,打开软件; 2)"文件"--->"快速连接"-->弹出对话框: 2.1)输入主机名 ...

  2. Win7 远程桌面 错误代码:5 异常处理(您的远程桌面会话即将结束 此计算机的虚拟内存可能不足。请关闭其他程序,然后重试连接远程计算机。如果问题仍然存在,请联系网络管理员或技术支持。)

    问题表现: 在用windows7 远程桌面连接其他电脑时,出现错误提示对话框—-标题为“严重错误(错误代码:5)”,内容为“您的远程桌面会话即将结束 此计算机的虚拟内存可能不足.请关闭其他程序,然后重 ...

  3. 远程桌面连接无法验证您希望连接的计算机的身份-mac连接远程桌面

    在使用Mac(苹果笔记本)连接远程桌面的时候提示:”远程桌面连接无法验证您希望连接的计算机的身份”,具体异常如截图:解决方法如下:1. 登录云服务器.2. 打开运行,然后输入命令gpedit.msc, ...

  4. 孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库

    孤荷凌寒自学python第五十七天初次尝试使用python来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第三天.感觉这个东西学习起来还是那么困 ...

  5. 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库

    孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...

  6. mac下远程win8.1时提示"桌面连接无法验证您希望连接的计算机的身份"的解决办法

    在os x下使用远程桌面到win8.1,总出现“远程桌面连接无法验证您希望连接的计算机的身份”的提示. 解决方法:1.网上各种解释,包括防火墙是否打开,是否去掉“仅允许运行使用网络级别身份验证的远程计 ...

  7. PL/SQL配置和连接远端数据库

    1. 安装与配置 (1) 安装 因为是免安装的绿色版,所以解压到目录就可以了,保证目录中没有空格.下划线和中文字符. 还有一点,PL/SQL需要和Oracle的版本一致,都是32位或者都是64位,否则 ...

  8. WMI 连接远程计算机并进行局域网进程扫描

    On Error Resume Next Dim myArray(231) myArray(0)="smss.exe"myArray(1)="csrss.exe" ...

  9. python 模块 wmi 远程连接 windows 获取配置信息

    测试工具应用: https://ask.csdn.net/questions/247013 wmi连接不上报错问题集 https://blog.csdn.net/xcntime/article/det ...

随机推荐

  1. 转:mysql性能优化的19个要点

    原文来自于:http://outofmemory.cn/mysql/mysql-performance-tips 1.为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方 ...

  2. Apache Maven 入门篇(下)

    第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例.那么在对maven有了一点接触后,接下去的一步是要了解maven的核心概念,这样才能在使用maven的时 ...

  3. BZOJ 3786 星系探索

    Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球均有且仅有一个依赖星球.主星球 ...

  4. Google研究员Ilya Sutskever:成功训练LDNN的13点建议

    Google研究员Ilya Sutskever:成功训练LDNN的13点建议 摘要:本文由Ilya Sutskever(Google研究员.深度学习泰斗Geoffrey Hinton的学生.DNNre ...

  5. C#程序设计基础——字符串

    C#字符串使用string关键字声明,且由一个或多个字符构成的一组字符. 串联字符串 串联字符串是将一个字符串追加到另一个字符串末尾的过程.使用“+”或“+=”运算符串链字符符文本或字符串常量.串联字 ...

  6. Delphi判断文件是否正在被使用(CreateFile也可以只是为了读取数据,而不是创建)

    首先,我们先来认识下CreateFile函数,它的原型如下   HANDLE CreateFile( LPCTSTR lpFileName,    //指向文件名的指针 DWORD dwDesired ...

  7. Struts2 cookie的存取

    /** * Cookieの追加 * @return * @throws Exception */ private void addCookie(String name,String value){ C ...

  8. [置顶] 技术人血泪史:七种IT失误让你直接走人

    IT人士的真实故事:搞出大麻烦,旋即遭解雇 如今想找一份理想的IT工作并不容易,但丢掉一份工作却非常简单. 导致自己被炒鱿鱼的原因很多,无论是没能尽到保护雇主数字资产的义务.或者是滥用手中的权限以达到 ...

  9. Linux Kernel 远程拒绝服务漏洞

    漏洞名称: Linux Kernel 远程拒绝服务漏洞 CNNVD编号: CNNVD-201307-309 发布时间: 2013-07-18 更新时间: 2013-07-18 危害等级:    漏洞类 ...

  10. MySQL错误代码大全

    130 :文件格式不正确.(还不是很清楚错误的状况)145  :文件无法打开.1005:创建表失败.1006:创建数据库失败.1007:数据库已存在,创建数据库失败.1008:数据库不存在,删除数据库 ...