首页 > 编程 > C# > 正文

C#实现查杀本地与远程进程的方法

2020-01-24 02:14:58
字体:
来源:转载
供稿:网友

本文实例讲述了C#实现查杀本地与远程进程的方法。分享给大家供大家参考。

具体实现方法如下:

复制代码 代码如下:
using System;
using System.Management;
using System.Threading;
 
class xkill
{
public static void usage()
{
Console.WriteLine();
Console.WriteLine("xkill v1.0 Beta, By R&S");
Console.WriteLine("E-mail: yrwithsh@vip.sina.com");
Console.WriteLine("H-Page: Http://fz5fz.yeah.net");
Console.WriteLine();
Console.WriteLine("Usage:  xkill [ip] [account] [password] [programme] [time(s)]");
Console.WriteLine("If its the localhost,dont need account and password");
Console.WriteLine("Example: xkill 218.194.X.X administrator 123 qq.exe 60");
Console.WriteLine("         xkill 218.194.X.X administrator NULL qq.exe 60");
Console.WriteLine("         xkill 127.0.0.1 qq.exe 60 (for localhost)");
 
}
 
public static void Main(string[] args)
{
if((args.Length!=5)&&(args.Length!=3))
{
usage();
Environment.Exit(0);
}
while((args[0]=="127.0.0.1")││(args[0]=="192.168.0.1"))
{
string KillName=args[1]; 
ManagementObjectSearcher link = new ManagementObjectSearcher("SELECT * From Win32_Process");
ManagementObjectCollection Collection = link.Get();
foreach (ManagementObject Process in Collection)
{
Console.WriteLine("{0} {1}",Convert.ToString(Process["Name"]).PadRight(15),Process["ExecutablePath"]);
       if (Convert.ToString(Process["Name"])==KillName)
{
string[] Tparas = {"1"};
  Process.InvokeMethod("Terminate", Tparas);
}
 }
Console.WriteLine();
Console.WriteLine("Terminate it yet");
Thread.Sleep(Convert.ToInt32(args[2])*1000);
 }
 
try{
    do
    {
string KillName=args[3];
ConnectionOptions Conn = new ConnectionOptions();
Conn.Username =args[1];
if(args[2]=="NULL")
{
Conn.Password ="";
}
else Conn.Password =args[2];
ManagementPath p = new ManagementPath("//"+args[0]+"/root/cimv2");  
ManagementScope ms = new ManagementScope(p,Conn);
ObjectQuery oq = new ObjectQuery("SELECT * FROM Win32_Process");
ManagementObjectSearcher link = new ManagementObjectSearcher(ms,oq);
ManagementObjectCollection Collection = link.Get();
     Console.WriteLine("--------------------------------------------------------");
foreach (ManagementObject Process in Collection)
{
Console.WriteLine("{0}{1}",Convert.ToString(Process["Name"]).PadRight(15),Process["ExecutablePath"]);
       if (Convert.ToString(Process["Name"])==KillName)
{
string[] Tparas = {"1"};
  Process.InvokeMethod("Terminate", Tparas);
}
 
}
 
 
Thread.Sleep(Convert.ToInt32(args[4])*1000); 
 }while(true);
}
 catch(Exception exObj)
{
Console.WriteLine();
Console.WriteLine("failed!");
Console.WriteLine(exObj.Message);

}
}

 
希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表