爱飞 发表于 2015-1-16 22:37:50

ASP.NET网页编程之Visual C#顶用WMI编写收集使用程序

我以前很喜欢Serv-U,自从它用Java重写之后我就再也没用过,实在是太慢了,我宁可用IIS搭建FTP,虽然IIS搭建FTP在权限管理上很不灵活。visual|程序|收集  WMI是WindowsManagementInstrumentation的简称,即:视窗办理标准。在Windows2000或今后的版本中均安装得有,NT4.0则必要安装WMI的中心组件。经由过程WMI能够猎取远程盘算机的各类数据信息,把持远程盘算机的各类举动,而这就像操纵当地机一样便利、复杂。

  一.WMI简介

  WMI从基本上说应当为一种服务,而且关于当地分歧的用户,WMI一切的权限也纷歧样。盘算机超等用户能够为盘算机中的每个用户,设定分歧的WMI权限。在默许形态下,超等用户具有WMI的统统权限。供应WMI服务是经由过程程序"WinMgmt.exe"来完成的。能够从"System32Wbem"目次中找到这个文件。

  既然是服务,盘算机利用者就能够享用这类服务,一样也能够封闭这类服务。详细的操纵是:按按次翻开【把持面板】|【办理工具】|【组件服务】。WMI服务在组件服务中的显现称号为"WindowsManagementInstrumentation"。详细以下图01所示:



图01:组件服务窗口
  选中【称号】栏中"WindowsManagementInstrumentation",点击鼠标右键,在弹出的菜单中,选择【属性】,在【启动范例】选择框当选择"已禁用",然后在单击【中断】按钮,如许当地的WMI服务也就被封闭了。此时一切当地和远程的WMI挪用均为不法。下图为封闭WMI服务后的界面:



封闭WMI服务
  盘算机的超等用户在默许形态下具有WMI的统统权限,而且能够为当地其他用户设置WMI权限。详细操纵是,按按次翻开:【把持面板】|【办理工具】|【盘算机办理】。选中【盘算机办理】右侧的【服务和使用程序】中的【WMI控件】。详细如图02所示:



图02:【盘算机办理】对话框
  点击鼠标右键,在弹出的菜单中,选择【属性】。弹出【WMI控件属性】对话框中,选择【平安】页面。详细如图03所示:



图03:翻开WMI平安设置界面
  单击-4中【平安设置】按钮,弹出【平安设置Root】对话框,经由过程个中的【增加】和【删除】按钮,能够设定当地有哪些用户具有WMI权限,并经由过程【权限】选择栏为每个用户设置分歧的权限,详细如图04所示:



图04:设定当地用户的WMI权限
  经由过程上图,也能够发明盘算机超等用户在默许形态的WMI权限都是同意的,而且这些权限都是没法删除的。
<P>  二.VisualC#中操纵WMI的类库简介

  .NetFrameWorkSDK对WMI供应了周全的撑持,.NetFrameWorkSDK为VisualC#可以操纵WMI供应了一个专门的定名空间"System.Management"。在定名空间"System.Management"中供应了大批用以处置和WMI相干的类、接口和列举。

  定名空间"System.Management"中的成员长短常庞大的,因为篇幅所限完整先容这些成员是不成能的,也是没有要的。依据我的履历,以为要懂得、把握在VisualC#中利用WMI,上面六个类应当是进修的重点,分离是ConnectionOptions、ManagementScope、ObjectQuery、ManagementObjectSearcher、ManagementObjectCollection和ManagementObject。上面就复杂先容一下六个类:

  ・ConnectionOptions类

  ConnectionOptions类次要的功效是为创建的WMI毗连供应所需的一切设置。在使用WMI对远程盘算机举行操纵的时分,起首要举行WMI毗连,WMI毗连次要是利用的是ManagementScope类,乐成完成WMI毗连就要供应远程盘算机WMI用户名和口令。ConnectionOptions类能够经由过程其属性来供应这些信息。表01是ConnectionOptions类的一些次要属性及其复杂的申明。

属性申明Authority猎取或设置将用于考证指定用户的权力。Locale猎取或设置将用于毗连操纵的地区设置。Password供应用于WMI毗连操纵的口令。Username供应用于WMI毗连操纵的用户名。     表01:ConnectionOptions类经常使用属性及其申明

  个中最经常使用的属性是Password和Username。

  ・ManagementScope类

  经由过程ManagementScope类可以创建和远程盘算机(大概当地盘算机)的WMI毗连,暗示办理可操纵局限。创立WMI毗连能够经由过程二种办法:

  (1).使用机关函数,当利用上面机关函数初始化ManagementScope类实例,同时也就创建了WMI毗连,详细以下:

publicManagementScope(
stringpath,
ConnectionOptionsoptions
);
  参数:

  pathManagementScope的服务器和定名空间。

  options包括有干系接的选项的ConnectionOptions。

  利用机关函数是有风险的,由于假如不克不及依据供应的选项创建WMI毗连,程序会程序非常,呈现毛病。

  以下代码是使用此机关函数构建创建ManagementScope实例,并创建于远程盘算机majinhu的WMI毗连:

System.Management.ConnectionOptionsConn=newConnectionOptions();
//设定用于WMI毗连操纵的用户名
Conn.Username="WMI用户名";
//设定用户的口令
Conn.Password="此用户名对应口令";
System.Management.ManagementScopeMs=newManagementScope("majinhuootcimv2",Conn);
  (2).使用ManagementScope中供应的Connect办法:

  ManagementScope中的成员长短常少的,最经常使用的办法和属性各一个:经常使用属性是Options,次要为WMI创建供应参数;经常使用办法是Connect,经由过程它能够创建于远程盘算机的WMI毗连。以下是使用Connect办法创建WMI毗连的详细代码:

System.Management.ConnectionOptionsConn=newConnectionOptions();
//设定用于WMI毗连操纵的用户名
Conn.Username="WMI用户名";
//设定用户的口令
Conn.Password="此用户名对应口令";
System.Management.ManagementScopeMs=newManagementScope("majinhuootcimv2");
Ms.Options=Conn;
Ms.Connect();
//创建WMI毗连
  ・ObjectQuery类

  ObjectQuery类或其派生类用于在ManagementObjectSearcher中指定查询。程序中一样平常接纳查询字符串来机关ObjectQuery实例。个中的查询字符串是一品种似SQL言语的WQL言语。上面的ObjectQuery类机关函数中最多见的一种,详细语法以下:

publicObjectQuery(
stringquery
);
  参数:

  query查询的字符串

  ・ManagementObjectSearcher类

  ManagementObjectSearcher次要是依据指定的查询检索WMI工具的汇合。ManagementObjectSearcher构成成员也十分复杂,其办法Get办法长短常主要的,ManagementObjectSearcher经由过程Get办法举行WMI查询,并把失掉的了局汇合。Get办法的前往值是一个ManagementObjectCollection实例,它包括婚配指定查询的工具。

  表02是其ManagementObjectSearcher类的经常使用属性及其申明。

属性申明Options有关怎样搜刮工具的选项Query在搜刮器中挪用的查询Scope在个中查找工具的局限      表02:ManagementObjectSearcher类经常使用属性及其申明

  ・ManagementObjectCollection类

  ManagementObjectCollection类十分复杂,它次要暗示WMI实例的分歧汇合个中包含定名空间、局限和查询察看程序等。创立ManagementObjectCollection类没有机关函数。

  ・ManagementObject类

  ManagementObject类为单个办理工具或类。经由过程ManagementObject中的办法能够挪用ManagementObject对应的工具,从而实行响应的操纵。ManagementObject类是一个内容丰厚的类,表03和表04分离是其经常使用的属性和办法。

属性申明ClassPath工具的类的路径。Options检索工具时要利用的其他信息。Path工具的WMI路径。Scope此工具在个中驻留的局限。       表03:ManagementObject类经常使用属性及其申明

办法申明Clone创立工具的一个正本。CopyTo将工具复制到另外一个地位。Delete删除工具。Get绑定到办理工具。GetRelated猎取与该工具(接洽工具)相干的工具的汇合。GetRelationships猎取该工具的联系关系的汇合。InvokeMethod挪用对应的工具办法。Put提交对工具所做的变动。      表04:ManagementObject类经常使用办法及其申明

  上面就分离二个详细的示例来先容VisualC#中使用上述类,供应WMI把握怎样使用WMI编写收集使用程序,所利用的类库次要是利用了下面吸收的这六个类。在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。

莫相离 发表于 2015-1-19 19:30:27

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。

若天明 发表于 2015-1-19 19:30:28

在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。

简单生活 发表于 2015-1-19 19:30:28

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

再见西城 发表于 2015-1-28 09:49:05

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

深爱那片海 发表于 2015-2-5 20:26:10

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

精灵巫婆 发表于 2015-2-13 13:10:51

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

若相依 发表于 2015-3-3 21:44:09

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

谁可相欹 发表于 2015-3-11 13:59:31

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

只想知道 发表于 2015-3-18 21:54:09

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

金色的骷髅 发表于 2015-3-26 18:57:00

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
页: [1]
查看完整版本: ASP.NET网页编程之Visual C#顶用WMI编写收集使用程序