用WMI获取远程系统信息WMI(Windows管理规范:WindowsManagementInstrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。WMI是一种轻松获取系统信息的强大工具,而且不依赖IPC$。我把zzzevazzz的rs系列的几个脚本用C#写了一遍,可以查/杀进程、列举系统信息、列举/停止/启动服务、注销用户登陆/重启目标/关机/断电、列举用户信息。WMI的应用远不止这些,更多功能等你挖掘了。后附源代码(ps:代码结构很差,将就着看吧)。另:由于是用C#写的,所以需要.NETFramework的支持。编译好的可执行文件:ftp:\\10.1.1.1\incoming\WMI\mwmi.exe.NETFramework安装文件:ftp:\\10.1.1.1\incoming\WMI\NETFrameworkv1.0.3705Setup.exe---------------------------cuthere------------------------------usingSystem;usingSystem.Management;classMWmi{//帮助publicstaticvoidusage(){Console.WriteLine();Console.WriteLine("MWmiv0.1,bymyld");Console.WriteLine();Console.WriteLine("Usage:");Console.WriteLine("-pslist
---->Listprocesses.");Console.WriteLine("-pskill---->Killprocess.");Console.WriteLine("-osinfo---->ShowSystemInfo.");Console.WriteLine("-shut---->Shutdowmsystem.");Console.WriteLine("-svclist---->Listservice.");Console.WriteLine("-startsvc--->Startaservice.");Console.WriteLine("-stopsvc--->Stopaservice.");Console.WriteLine("-userlist---->Showallusers.");Console.WriteLine();}///应用程序的主入口点。publicstaticvoidMain(string[]args){if(args.Length<4){usage();Environment.Exit(0);}if(args[0]=="-pslist"){ConnectionOptionsConn=newConnectionOptions();Conn.Username=args[2];if(args[3]=="NULL"){Conn.Password="";}elseConn.Password=args[3];ManagementScopems=newManagementScope("\\\\"+args[1]+"\\root\\cimv2",Conn);try{ms.Connect();ObjectQueryQuery=newObjectQuery("SELECTProcessId,Name,ExecutablePathFROMWin32_Process");ManagementObjectSearcherlink=newManagementObjectSearcher(ms,Query);ManagementObjectCollectionCollection=link.Get();Console.WriteLine();Console.WriteLine("PIDNameExecutablePath");foreach(ManagementObjectProcessinCollection){Console.WriteLine(Convert.ToString(Process["ProcessId"]).PadRight(6)+Convert.ToString(Process["Name"]).PadRight(20)+Process["ExecutablePath"]);}Console.WriteLine();}catch(ExceptionexObj){Console.WriteLine();Console.WriteLine("Failed!Errorcode:"+exObj.Message);Console.WriteLine();}}//END-pslistelseif(args[0]=="-pskill"){if(args.Length!=5){usage();Environment.Exit(0);}try{ConnectionOptionsConn=newConnectionOptions();Conn.Username=args[2];if(args[3]=="NULL"){Conn.Password="";}elseConn.Password=args[3];//stringProName=args[4];ManagementScopems=newManagementScope("\\\\"+args[1]+"\\root\\cimv2",Conn);ms.Connect();ObjectQueryQuery=newObjectQuery("SELECT*FROMWin32_Process");ManagementObjectSearcherlink=newManagementObjectSearcher(ms,Query);ManagementObjectCollectionCollection=link.Get();foreach(ManagementObjectProcessinCollection){if(Convert.ToString(Process["ProcessId"])==args[4]){string[]Tparas={"1"};Process.InvokeMethod("Terminate",Tparas);Console.WriteLine();Console.WriteLine("Killprocess{0}Successful!",Process["Name"]);}}}catch(ExceptionexObj){Console.WriteLine();Console.WriteLine("Failed!Errorcode:"+exObj.Message);Console.WriteLine();}}//END-pskillelseif(args[0]=="-osinfo"){C...