怎样用WMI获取远程系统信息.doc_第1页
怎样用WMI获取远程系统信息.doc_第2页
怎样用WMI获取远程系统信息.doc_第3页
怎样用WMI获取远程系统信息.doc_第4页
怎样用WMI获取远程系统信息.doc_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用WMI获取远程系统信息WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。WMI是一种轻松获取系统信息的强大工具, 而且不依赖IPC$。 我把zzzevazzz的rs系列的几个脚本用C写了一遍,可以查/杀进程、列举系统信息、列举/停止/启动服务、注销用户登陆/重启目标/关机/断电、列举用户信息。WMI的应用远不止这些,更多功能等你挖掘了。后附源代码(ps:代码结构很差,将就着看吧)。 另:由于是用C写的,所以需要.NET Framework 的支持。 编译好的可执行文件: ftp:incomingWMImwmi.exe .NET Framework安装文件: ftp:incomingWMINET Framework v1.0.3705 Setup.exe -cut here- using System; using System.Management; class MWmi /帮助 public static void usage() Console.WriteLine(); Console.WriteLine(MWmi v0.1 , by myld); Console.WriteLine(); Console.WriteLine(Usage: ); Console.WriteLine( -pslist -List processes.); Console.WriteLine( -pskill -Kill process.); Console.WriteLine( -osinfo -Show SystemInfo.); Console.WriteLine( -shut -Shutdowm system.); Console.WriteLine( -svclist -List service.); Console.WriteLine( -startsvc -Start a service.); Console.WriteLine( -stopsvc -Stop a service.); Console.WriteLine( -userlist -Show all users.); Console.WriteLine(); / 应用程序的主入口点。 public static void Main(string args) if ( args.Length 4 ) usage(); Environment.Exit(0); if( args0 = -pslist) ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope( +args1+rootcimv2, Conn ); try ms.Connect(); ObjectQuery Query = new ObjectQuery(SELECT ProcessId,Name,ExecutablePath FROM Win32_Process); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,Query); ManagementObjectCollection Collection = link.Get(); Console.WriteLine(); Console.WriteLine(PID Name ExecutablePath); foreach (ManagementObject Process in Collection) Console.WriteLine( Convert.ToString(ProcessProcessId).PadRight(6)+ Convert.ToString(ProcessName).PadRight(20)+ProcessExecutablePath ); Console.WriteLine(); catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed! Error code: +exObj.Message); Console.WriteLine(); / END -pslist else if( args0 = -pskill ) if ( args.Length != 5 ) usage(); Environment.Exit(0); try ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; /string ProName = args4; ManagementScope ms = new ManagementScope( + args1 + rootcimv2, Conn); ms.Connect(); ObjectQuery Query = new ObjectQuery(SELECT * FROM Win32_Process); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,Query); ManagementObjectCollection Collection = link.Get(); foreach (ManagementObject Process in Collection) if ( Convert.ToString(ProcessProcessId) = args4 ) string Tparas = 1; Process.InvokeMethod(Terminate, Tparas); Console.WriteLine(); Console.WriteLine(Kill process 0 Successful!, ProcessName ); catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed! Error code: +exObj.Message ); Console.WriteLine(); /END -pskill else if (args0 = -osinfo) ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope( + args1 + rootcimv2, Conn); try /Win32_ComputerSystem ms.Connect(); ObjectQuery Query = new ObjectQuery(SELECT Name,UserName,Domain,DomainRole FROM Win32_ComputerSystem); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,Query); ManagementObjectCollection Collection = link.Get(); foreach (ManagementObject OsInfo in Collection) Console.WriteLine(); Console.WriteLine(OS Info:); Console.WriteLine( Computer Name : + OsInfoName ); Console.WriteLine( User Name : + OsInfoUserName ); Console.WriteLine( Domain : + OsInfoDomain ); Console.Write( Domain Role : ); switch(Convert.ToInt32( OsInfoDomainRole ) ) case 0: Console.WriteLine(Standalone Workstation); break; case 1: Console.WriteLine(Member Workstation); break; case 2: Console.WriteLine(Standalone Server); break; case 3: Console.WriteLine(Member Server); break; case 4: Console.WriteLine(Backup Domain Controller); break; case 5: Console.WriteLine(Primary Domain Controller); break; default: break; /Win32_OperatingSystem ms.Connect(); ObjectQuery Query1 = new ObjectQuery(SELECT * FROM Win32_OperatingSystem); ManagementObjectSearcher link1 = new ManagementObjectSearcher(ms,Query1); ManagementObjectCollection Collection1 = link1.Get(); foreach (ManagementObject OsInfo1 in Collection1) Console.WriteLine( Caption : + OsInfo1Caption ); Console.WriteLine( Organization : + OsInfo1Organization ); Console.WriteLine( RegisteredUser : + OsInfo1RegisteredUser ); Console.WriteLine( BuildType : + OsInfo1BuildType ); Console.WriteLine( CSDVersion : + OsInfo1CSDVersion ); Console.WriteLine( Version : + OsInfo1Version ); Console.WriteLine( ServicePack : + OsInfo1ServicePackMajorVersion +.+ OsInfo1ServicePackMinorVersion ); Console.Write( ProductSuite : ); switch( Convert.ToInt32( OsInfo1OSProductSuite ) ) case 1: Console.WriteLine(Small Business); break; case 2: Console.WriteLine(Enterprise); break; case 4: Console.WriteLine(BackOffice); break; case 8: Console.WriteLine(Communication Server); break; case 16: Console.WriteLine(Terminal Server); break; case 32: Console.WriteLine(Small Business (Restricted); break; case 64: Console.WriteLine(Embedded NT); break; case 128: Console.WriteLine(Data Center); break; default: break; Console.Write( InstallDate : ); string id = Convert.ToString(OsInfo1InstallDate); Console.WriteLine(id.Substring(0,4)+/+id.Substring(4,2)+/+id.Substring(6,2) + +id.Substring(8,2)+:+ id.Substring(10,2) ); Console.WriteLine( System Directory: + OsInfo1SystemDirectory ); Console.WriteLine( WindowsDirectory: + OsInfo1WindowsDirectory ); Console.WriteLine( Boot Device : + OsInfo1BootDevice ); Console.WriteLine( FreeMemory : + Convert.ToInt32( OsInfo1FreePhysicalMemory)/1024+ MB ); / Win32_Processor Console.WriteLine(); Console.WriteLine(Processor Info :); ms.Connect(); ObjectQuery Query2 = new ObjectQuery(SELECT * FROM Win32_Processor); ManagementObjectSearcher link2 = new ManagementObjectSearcher(ms,Query2); ManagementObjectCollection Collection2 = link2.Get(); foreach (ManagementObject ProcessorInfo in Collection2) Console.WriteLine( ProcessorsName : + ProcessorInfoName ); Console.WriteLine( CurClockSpeed : + ProcessorInfoCurrentClockSpeed+ MHz ); Console.WriteLine( Description : + ProcessorInfoDescription ); Console.WriteLine( Manufacturer : + ProcessorInfoManufacturer ); /Win32_LogicalMemoryConfiguration Console.WriteLine(); Console.WriteLine(Memory Info :); ms.Connect(); ObjectQuery Query3 = new ObjectQuery(SELECT TotalPhysicalMemory FROM Win32_LogicalMemoryConfiguration); ManagementObjectSearcher link3 = new ManagementObjectSearcher(ms,Query3); ManagementObjectCollection Collection3 = link3.Get(); foreach (ManagementObject MemoryInfo in Collection3) Console.WriteLine( TotalMemory : +Convert.ToInt32(MemoryInfoTotalPhysicalMemory)/1024+ MB ); /Win32_BIOS Console.WriteLine(); Console.WriteLine(BIOS Info :); ms.Connect(); ObjectQuery Query4 = new ObjectQuery(SELECT Description,Version,Manufacturer FROM Win32_BIOS); ManagementObjectSearcher link4 = new ManagementObjectSearcher(ms,Query4); ManagementObjectCollection Collection4 = link4.Get(); foreach (ManagementObject BIOSInfo in Collection4) Console.WriteLine( Description : + BIOSInfoDescription ); Console.WriteLine( Version : + BIOSInfoVersion ); Console.WriteLine( Manufacturer : + BIOSInfoManufacturer ); /Win32_DisplayConfiguration Console.WriteLine(); Console.WriteLine(Display Configuration :); ms.Connect(); ObjectQuery Query5 = new ObjectQuery(SELECT * FROM Win32_DisplayConfiguration); ManagementObjectSearcher link5 = new ManagementObjectSearcher(ms,Query5); ManagementObjectCollection Collection5 = link5.Get(); foreach (ManagementObject DisInfo in Collection5) Console.WriteLine( Caption : + DisInfoCaption ); Console.WriteLine( DeviceName : + DisInfoDeviceName ); Console.WriteLine( DriverVersion : + DisInfoDriverVersion ); Console.WriteLine( DispFrequency : + DisInfoDisplayFrequency + Hz ); Console.WriteLine( Bits Per Pel : + DisInfoBitsPerPel + Bits ); Console.WriteLine( Pels : +DisInfoPelsWidth+ X +DisInfoPelsHeight ); /Win32_DiskDrive Console.WriteLine(); Console.WriteLine(Disk Info :); ms.Connect(); ObjectQuery Query6 = new ObjectQuery(SELECT * FROM Win32_DiskDrive); ManagementObjectSearcher link6 = new ManagementObjectSearcher(ms,Query6); ManagementObjectCollection Collection6 = link6.Get(); foreach (ManagementObject DiskInfo in Collection6) Console.WriteLine( DeviceID : + DiskInfoDeviceID ); Console.WriteLine( Caption : + DiskInfoCaption ); Console.WriteLine( Interface Type : + DiskInfoInterfaceType ); Console.WriteLine( SCSI Bus : + DiskInfoSCSIBus ); Console.WriteLine( SCSI Port : + DiskInfoSCSIPort ); Console.WriteLine( SectorsPerTrack : + DiskInfoSectorsPerTrack ); Console.WriteLine( Partitions : + DiskInfoPartitions ); Console.WriteLine( Size : + Convert.ToInt64(DiskInfoSize)/1000000000 + GB); /Win32_LogicalDisk Console.WriteLine(); Console.WriteLine( Volume Type FileSystem Size / Free); ms.Connect(); ObjectQuery Query7 = new ObjectQuery(SELECT * FROM Win32_LogicalDisk); ManagementObjectSearcher link7 = new ManagementObjectSearcher(ms,Query7); ManagementObjectCollection Collection7 = link7.Get(); foreach (ManagementObject DiskInfo1 in Collection7) Console.Write( +Convert.ToString(DiskInfo1Caption).PadRight(8) ); switch(Convert.ToInt16(DiskInfo1DriveType) ) case 2: Console.WriteLine(Removable Disk ); break; case 3: Console.Write(Local Disk ); Console.Write( Convert.ToString(DiskInfo1FileSystem).PadRight(15) ); Console.Write( Convert.ToInt64(DiskInfo1Size)/1000000+MB Total ); Console.WriteLine( Convert.ToInt64(DiskInfo1FreeSpace)/1000000+MB Free); break; case 4: Console.WriteLine(Network Drive); break; case 5: Console.WriteLine(CD-ROM); break; case 6: Console.WriteLine(RAM Disk); break; default: break; catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed. Error code : +exObj.Message); / END -psinfo else if (args0 = -shut) if ( args.Length 5 ) Console.WriteLine(); Console.WriteLine( MWmi -shut ); Environment.Exit(0); try ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope( +args1+rootcimv2, Conn ); ms.Connect(); ObjectQuery query = new ObjectQuery(SELECT * FROM Win32_OperatingSystem); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,query); ManagementObjectCollection Collection = link.Get(); switch( args4 ) case logout: foreach( ManagementObject choise in Collection ) string ss = 0; choise.InvokeMethod(Win32Shutdown,ss); Console.WriteLine(); Console.WriteLine(Logout Successful!); break; case shutdown: foreach( ManagementObject choise in Collection ) string ss = 1; choise.InvokeMethod(Win32Shutdown,ss); Console.WriteLine(); Console.WriteLine(Shutdown Successful!); break; case reboot: foreach( ManagementObject choise in Collection ) string ss = 2; choise.InvokeMethod(Win32Shutdown,ss); Console.WriteLine(); Console.WriteLine(Reboot Successful!); break; case poweroff: foreach( ManagementObject choise in Collection ) string ss = 8; choise.InvokeMethod(Win32Shutdown,ss); Console.WriteLine(); Console.WriteLine(PowerOff Successful!); break; default : Console.WriteLine(); Console.WriteLine(Input Error!); Environment.Exit(0); break; catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed. Error code : +exObj.Message); / END -shut else if (args0 = -svclist) try ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope(+args1+rootcimv2, Conn ); ms.Connect(); ObjectQuery query = new ObjectQuery(SELECT * FROM Win32_Service); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,query); ManagementObjectCollection Collection = link.Get(); foreach(ManagementObject service in Collection) Console.WriteLine(); Console.WriteLine(ServiceName : + serviceName); Console.WriteLine(DisplayName : + serviceDisplayName); Console.WriteLine(State : + serviceState); Console.WriteLine(StartMode : + serviceStartMode); Console.WriteLine(ServiceType : + serviceServiceType); Console.WriteLine(PathName : + servicePathName); catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed. Error code : +exObj.Message); /END svclist else if (args0 = -stopsvc) if ( args.Length != 5 ) usage(); Environment.Exit(0); try ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope( + args1 + rootcimv2, Conn); ms.Connect(); ObjectQuery Query = new ObjectQuery(SELECT * FROM Win32_Service); ManagementObjectSearcher link = new ManagementObjectSearcher(ms,Query); ManagementObjectCollection Collection = link.Get(); foreach (ManagementObject service in Collection) if ( Convert.ToString( serviceName ) = args4 ) string Tparas = 1; service.InvokeMethod(StopService, Tparas); Console.WriteLine(); Console.WriteLine(Stop Service +serviceName + Successful!); catch(Exception exObj) Console.WriteLine(); Console.WriteLine(Failed. Error code : +exObj.Message); else if (args0 = -startsvc) if ( args.Length != 5 ) usage(); Environment.Exit(0); try ConnectionOptions Conn = new ConnectionOptions(); Conn.Username =args2; if(args3=NULL) Conn.Password =; else Conn.Password =args3; ManagementScope ms = new ManagementScope( + args1 + rootcimv2, Conn); ms.Connect(); ObjectQuery Qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论